Angular.js: 单击子元素也会触发它自己的 ng-click 和父元素

创建于 2013-12-03  ·  9评论  ·  资料来源: angular/angular.js

如果我有一个<div>ng-click ,然后<button>内有独立的ng-click ,点击该按钮会触发两个ng-click处理程序。

我为此找到了 Igor 的古老公关(#31 !),但他添加的stopPropagation()似乎已经丢失了。

我试图平分,但发现它在 1.2.3、master、1.1.5、1.1.3、1.0.6 或 1.0.3 中不起作用。 我试图在上面的 PR 中将 master 和 Igor 的提交一分为二,但是它们的更改太旧了(0.10.x),以至于我的测试应用程序根本无法运行。

Plunkr上重现这一点的简单测试用例。

最有用的评论

只需要在单击事件的Child div上添加$event.stopPropagation()代码

所有9条评论

似乎stopPropagation()调用已被 1752c8c44a7058e974ef208e583683eac8817789 删除。

@tbosch请决定这是否按预期工作,或者我们是否可以做些什么来处理这种情况。

默认情况下,我们无法停止传播,因为无法停止传播。

有不停止传播的有效用例。
停止传播会使这些用例变得不可能,因为我们无法停止传播。

例如用例:
带有“发布”按钮的项目列表。 单击这些项目之一时,该项目应突出显示为所选项目。 如果按下非选定项目的“发布”按钮,情况也应该如此。

现在这是可能的,看看这个朋克: http :

关闭它,因为它按预期工作。

只需要在单击事件的Child div上添加$event.stopPropagation()代码

@gomteshhatgine在移动设备或离子上不起作用。 它也不会触发子 ng-click。

@gomteshhatgine在我的情况下,它仍然在父执行时触发。 你有另一种方法吗?

@maceonrails 不知道我没有尝试过的移动设备

@xenogew它应该可以工作
你能分享一下代码片段吗?

@gomteshhatgine谢谢。 它起作用了。

不工作了

此页面是否有帮助?
0 / 5 - 0 等级