一尘不染

在捕获阶段,angularjs可以单击处理事件吗?

angularjs

在捕获阶段而不是冒泡阶段是否可能会出现angularjs ng-click处理事件?我想按照从父项开始到被单击元素结束的顺序汇总每个父项元素的数据。


阅读 227

收藏
2020-07-04

共1个答案

一尘不染

让我们ng- clickngEventDirs.js#L50上查看源代码

如您所见,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

2020-07-04