Trong ví dụ sau:AngularJS - nhiều ng-click - sự kiện bọt
<li ng-repeat="item in items" ng-click="showItem(item)">
<h3>{{item.title}}</h3>
<button ng-click="remove(item)">Remove</button>
</li>
Khi tôi bấm vào nút showItem()
cũng được gọi do sự kiện bọt. Tôi biết rằng tôi có thể sử dụng $event
để xem cho $event.currentTarget
và thực hiện $event.stopPropagation()
vv nhưng điều này rất xấu.
Btw. Tôi không muốn dừng công tác tuyên truyền trên button
(Trong trường hợp của tôi button
là một twitter bootstrap
dopdown/button
- đây chỉ là một ví dụ)
Làm thế nào để ngăn chặn showItem()
từ beeing gọi khi tôi bấm vào nút remove
?
EDIT Việc sửa chữa xấu xí sẽ có:
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
}
Nếu bạn không thể sử dụng stopPropagation, bạn sẽ phải tái cơ cấu dom của bạn để chúng không được lồng nhau. Điều đó có thể không? –