【问题标题】:Can angularjs ng-click process events during the capturing phase?angularjs ng-click 可以在捕获阶段处理事件吗?
【发布时间】:2014-10-07 10:35:29
【问题描述】:

是否可以在捕获阶段而不是冒泡阶段有 angularjs ng-click 进程事件?我想从每个父元素中聚合数据,从父元素开始,到被点击的元素结束。

【问题讨论】:

    标签: angularjs angularjs-ng-click


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-21
      • 2016-04-16
      • 2015-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多