g00*_*0fy 41 events javascript-events angularjs angularjs-ng-repeat angularjs-ng-click
在以下示例中:
<li ng-repeat="item in items" ng-click="showItem(item)">
<h3>{{item.title}}</h3>
<button ng-click="remove(item)">Remove</button>
</li>
Run Code Online (Sandbox Code Playgroud)
当我点击按钮时,showItem()
由于事件冒泡也会调用它.我知道我可以$event
用来观察$event.currentTarget
和做$event.stopPropagation()
等等,但这非常难看.
顺便说一句.我不想停止传播button
(在我的情况下button
是一个twitter bootstrap
dopdown/button
- 这只是一个例子)
showItem()
当我点击remove
按钮时,如何停止调用?
编辑 丑陋的解决方案是:
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
}
Run Code Online (Sandbox Code Playgroud)
Tib*_*ibo 64
这个解决方案对我有用(我只支持最近的浏览器,所以我尝试修改代码以更复古兼容):
HTML:
<li ng-repeat="item in items" ng-click="showItem(item)">
<h3>{{item.title}}</h3>
<button ng-click="remove(item, $event)">Remove</button>
</li>
Run Code Online (Sandbox Code Playgroud)
脚本:
function remove(item, $event) {
// do some code here
// Prevent bubbling to showItem.
// On recent browsers, only $event.stopPropagation() is needed
if ($event.stopPropagation) $event.stopPropagation();
if ($event.preventDefault) $event.preventDefault();
$event.cancelBubble = true;
$event.returnValue = false;
}
function showItem(item) {
// code here
}
Run Code Online (Sandbox Code Playgroud)
编辑 - 添加了一个JSFiddle演示来试用它 http://jsfiddle.net/24e7mapp/1/
归档时间: |
|
查看次数: |
32946 次 |
最近记录: |