一尘不染

我怎样才能使AngularJS指令stopPropagation?

javascript

我试图“ stopPropagation”以防止单击li内的元素(链接)时关闭TwitterBootstrap导航栏下拉菜单。

在Angular中,看起来像指令是执行此操作的地方?所以我有:

// do not close dropdown on click
directives.directive('stopPropagation', function () {
    return {
        link:function (elm) {            
            $(elm).click(function (event) {                
                event.stopPropagation();
            });
        }
    };
});

…但是该方法不属于元素:

TypeError: Object [object Object] has no method 'stopPropagation'

我把指令与

<li ng-repeat="foo in bar">
  <div>
    {{foo.text}}<a stop-propagation ng-click="doThing($index)">clickme</a>
  </div>
</li>

有什么建议么?


阅读 352

收藏
2020-05-01

共1个答案

一尘不染

“当前一些指令(即ng:click)停止事件传播。这阻止了与依赖于捕获此类事件的其他框架的互操作性。” -

…并且能够在没有指令的情况下进行修复,只需执行以下操作:

<a ng-click="doThing($index); $event.stopPropagation();">x</a>
2020-05-01