【问题标题】:AngularJS - does it matter where $event.stopPropagation() is called?AngularJS - 在哪里调用 $event.stopPropagation() 是否重要?
【发布时间】:2015-08-19 20:59:26
【问题描述】:

我想停止将 ng-repeat 上的事件传播到父元素。我的代码是:

<li ng-repeat="node in nodes"><div ng-click="$event.stopPropagation(); myFunc(node);"></li>

经过一段时间的挣扎后,我发现更改在 ng-click 上调用函数的顺序可以解决此问题。我只需要将其更改为:

<li ng-repeat="node in nodes"><div ng-click="myFunc(node); $event.stopPropagation();"></li>

为什么顺序在这里很重要?事实上,我认为调用 $event.stopPropagation() 应该在其他任何事情之前发生,以便在其他任何事情完成之前停止事件传播。

谢谢!

【问题讨论】:

    标签: angularjs events stoppropagation


    【解决方案1】:

    @event 对象在 ng-click 指令中创建,您可以将其传递给您的 ng-click 处理函数:ng-click="myFunc(node):..."

    ngClick 指令(以及所有其他事件指令)创建在同一范围内可用的 $event 变量。这个变量是对JS事件对象的引用,可以用来调用stopPropagation()

    $event.stopPropagtion 被传递给 ng-click 函数 myFunc(node); Angularjs 指令按顺序调用函数。

    【讨论】:

    • 我认为 OP 想知道为什么 ngClick 中的函数顺序很重要。
    • 好吧,我假设答案是在 angularjs 指令中按顺序调用函数,并从点击事件函数 myFunc(node) 中调用 $event.stopPropagation()。 $event.stopPropagation 被传递给点击事件。
    猜你喜欢
    • 1970-01-01
    • 2019-02-20
    • 1970-01-01
    • 1970-01-01
    • 2013-03-14
    • 2019-05-12
    • 2021-08-02
    • 2011-04-01
    • 1970-01-01
    相关资源
    最近更新 更多