【发布时间】:2014-10-07 10:35:29
【问题描述】:
是否可以在捕获阶段而不是冒泡阶段有 angularjs ng-click 进程事件?我想从每个父元素中聚合数据,从父元素开始,到被点击的元素结束。
【问题讨论】:
标签: angularjs angularjs-ng-click
是否可以在捕获阶段而不是冒泡阶段有 angularjs ng-click 进程事件?我想从每个父元素中聚合数据,从父元素开始,到被点击的元素结束。
【问题讨论】:
标签: angularjs angularjs-ng-click
让我们在ngEventDirs.js#L50查看ng-click的源代码
您可以看到ng-click 和所有其他使用.on() 的事件指令。
所以,答案是不,不可能。
如果你真的需要它,你可以为此编写一个自定义指令。比如稍微修改ng-click的代码:
.directive('captureClick', function($parse) {
return {
restrict: 'A',
compile: function(element, attrs) {
var fn = $parse(attrs.captureClick);
return function(scope, element) {
element[0].addEventListener('click', function(event) {
scope.$apply(function() {
fn(scope, {
$event: event
});
});
}, true);
};
}
}
});
并像这样使用它:
<div title="A" ng-click="onBubbled($event)" capture-click="onCaptured($event)">
<div title="B" ng-click="onBubbled($event)" capture-click="onCaptured($event)">
<div title="C" ng-click="onBubbled($event)" capture-click="onCaptured($event)">
Yo!
</div>
</div>
</div>
Plunker 示例: http://plnkr.co/edit/SVPv0fCNRQX4JXHeL47X?p=preview
【讨论】: