angularjs - angularjs ng-click 可以在捕获阶段处理事件吗?

标签 angularjs angularjs-ng-click

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

最佳答案

让我们看看ng-click的源代码在 ngEventDirs.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>

示例Plunker: http://plnkr.co/edit/SVPv0fCNRQX4JXHeL47X?p=preview

关于angularjs - angularjs ng-click 可以在捕获阶段处理事件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25296808/

相关文章:

javascript - 按钮倒计时启用

javascript - 用于静态网页的 AngularJS SEO(S3 CDN)

javascript - 语法错误: missing ; before statement in Angular controller

javascript - ng-click 上的 ng-show 不适用于 AngularJS

javascript - 无法通过 Angular JS 中的 ng-click 传递 anchor 标记 ID 值。获取未定义的值

angularjs - 数据管理/CRUD 生成器 AngularJS

angularjs - 如何对动画进行排序

angularjs - ng-click 中的 Angular 插值范围变量

angularjs - 通过 ng 单击多个元素来切换类

php - 带输入字段和提交按钮的 PHP 的 Angular JS