在捕获阶段而不是冒泡阶段是否可能会出现angularjs ng-click处理事件?我想按照从父项开始到被单击元素结束的顺序汇总每个父项元素的数据。
让我们ng- click在ngEventDirs.js#L50上查看源代码
ng- click
如您所见,ng-click和使用所有其他事件指令.on()。
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>
柱塞示例: http ://plnkr.co/edit/SVPv0fCNRQX4JXHeL47X?p=preview