在捕获阶段可以对进程事件进行有角度的点击吗?

时间:2014-08-13 21:51:49

标签: angularjs angularjs-ng-click

是否可以在捕获阶段而不是冒泡阶段进行角度点击过程事件?我希望从父元素开始按顺序聚合每个父元素的数据,并以点击的元素结束。

1 个答案:

答案 0 :(得分:18)

让我们在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