我在表行上有一个单击事件,在这一行中还有一个带有单击事件的删除按钮 . 当我单击删除按钮时,也会触发行上的单击事件 .
这是我的代码 .
<tbody>
<tr ng-repeat="user in users" class="repeat-animation" ng-click="showUser(user, $index)">
<td>{{user.firstname}}</td>
<td>{{user.lastname}}</td>
<td>{{user.email}}</td>
<td><button class="btn red btn-sm" ng-click="deleteUser(user.id, $index)">Delete</button></td>
</tr>
</tbody>
当我单击表格单元格中的删除按钮时,如何防止 showUser
事件被触发?
5 回答
ngClick指令(以及所有其他事件指令)创建
$event
变量,该变量在同一范围内可用 . 此变量是对JSevent
对象的引用,可用于调用stopPropagation()
:PLUNKER
Stewie答案的补充 . 如果您的回调决定是否应该停止传播,我发现将
$event
对象传递给回调很有用:然后在回调本身中,您可以决定是否应该停止事件的传播:
我写了一个指令,允许你限制点击有效的区域 . 它可以用于像这样的某些场景,因此您不必根据具体情况处理点击,而只是说“点击不会来自此元素” .
你会像这样使用它:
请记住,这会阻止最后一个单元格的所有点击,而不仅仅是按钮 . 如果这不是你想要的,你可能想要像这样包装按钮:
这是指令的代码:
如果您正在使用像我这样的指令,那么当您需要两个数据方式绑定时,例如在更新任何模型或集合中的属性之后,它是如何工作的:
现在,您可以轻松地在任何按钮,链接,div等中使用它,如下所示: