【发布时间】:2021-12-17 15:39:20
【问题描述】:
在以下示例中:
<li ng-repeat="item in items" ng-click="showItem(item)">
<h3>{{item.title}}</h3>
<button ng-click="remove(item)">Remove</button>
</li>
当我单击按钮 showItem() 时,也会由于事件冒泡而被调用。
我知道我可以使用$event 来监视$event.currentTarget 并执行$event.stopPropagation() 等,但这很丑。
顺便说一句。我不想停止在 button 上的传播(在我的情况下,button 是 twitter bootstrap dopdown/button - 这只是一个示例)
当我点击remove 按钮时,如何阻止showItem() 被呼叫?
编辑 丑陋的解决方法是:
function remove(item,$event){
$event.originalEvent.prevent = true;
// rest of the code
}
function showItem(item,$event){
if($event.originalEvent.prevent)return;
// rest of the code
}
【问题讨论】:
-
如果你不能使用 stopPropagation,你将不得不重组你的 dom,这样它们就不会被嵌套。这可能吗?
标签: javascript angularjs dom-events angularjs-ng-repeat angularjs-ng-click