在嵌套的Ng-click中触发两次
ng-click triggered twice with in a nested ng-click
当试图在列表中使用ng-click
时,我遇到了一个问题,该列表是另一个具有ng-click
事件的列表的子列表。下面是我的代码
<ul>
<li
ng-repeat="facet in node.Facets"
ng-click="updateNav(facet.Action)"
ng-cloak
>
{{facet.DisplayValue}}
<ul>
<li ng-repeat="sub in facet.Refinements.Nodes[0].Facets"
ng-click="updateSubNav(sub.Action)"
>
{{sub.DisplayValue}}
</li>
</ul>
</li>
</ul>
问题是,当我点击updateSubNav
时,它会自动触发updateNav
。当我单击updateSubNav
时,我如何防止触发updateNav
(因为我希望这2种方法独立工作?
阻止事件传播。
视图:
<li ng-repeat="sub in facet.Refinements.Nodes[0].Facets"
ng-click="updateSubNav($event, sub.Action)">
^^^^^^ === Pass event object
控制器:
$scope.updateSubNav = function($event, action) {
// Code here
// Stop propagation
$event.stopPropagation();
}
这就是事件冒泡的工作原理,您需要在div内部单击事件的stopPropagation
来防止它向上发生。
ng-click="updateSubNav(sub.Action); $event.stopPropagation()"
您可以通过将$event
对象传递给updateSubNav
方法&stopPropagation
的事件从那里像@Tushar
已经显示在他的回答。
这是由于事件冒泡
<ul>
<li
ng-repeat="facet in node.Facets"
ng-click="updateNav(facet.Action)"
ng-cloak
>
{{facet.DisplayValue}}
<ul>
<li ng-repeat="sub in facet.Refinements.Nodes[0].Facets"
ng-click="updateSubNav(sub.Action, $event)"
>
{{sub.DisplayValue}}
</li>
</ul>
</li>
</ul>
$scope.updateSubNav = function(action,$event){
$event.stopPropagation();
}
相关文章:
- 如何对两个嵌套对象进行排序
- 由于$compile,Javascript(Angular)嵌套指令加载了两次
- 如何在同一个表中显示这两个嵌套ng重复的元素
- 合并两个嵌套的JSON数组
- 精细上传器中的嵌套dropzones上传文件两次
- 单击两个嵌套<李>s
- 以嵌套形式动态生成的字段添加了两次 Rails
- rails link_to_add_fields 以嵌套形式将每个字段添加两次
- 对两个嵌套的ng重复进行角度自定义过滤
- 由于嵌套元素,单击侦听器激发两次
- AngularJS$q中的两个嵌套线程是否可以在没有$q.dedefe()的情况下分叉和连接
- 合并两个嵌套对象,并在侧面连接数组
- 如何通过两个嵌套的匿名函数(一个带有超时的事件处理程序)传递变量
- 在两个嵌套循环中同步调用
- 如何为两个嵌套属性保存id
- 如何从两次或三次嵌套的ng-repeat作用域访问控制器的作用域
- 两个嵌套的for/循环,没有重复的对
- 基于javascript中的条件合并两个嵌套的JSON对象
- JS基于两个嵌套元素数组的比较返回数组
- Jquery的两个api调用在两个嵌套的$中检索不同的动态元素.每一个循环