ng-click 在嵌套的 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
(因为我希望这两种方法独立工作?
阻止事件传播。
查看:
<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();
}
这就是事件冒泡的工作原理,您需要 stopPropagation
内部 div 单击事件以防止它向上发生。
ng-click="updateSubNav(sub.Action); $event.stopPropagation()"
您可以通过将 $event
对象传递给 updateSubNav
方法和 stopPropagation
事件的 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();
}
我在尝试在一个列表中使用 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
(因为我希望这两种方法独立工作?
阻止事件传播。
查看:
<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();
}
这就是事件冒泡的工作原理,您需要 stopPropagation
内部 div 单击事件以防止它向上发生。
ng-click="updateSubNav(sub.Action); $event.stopPropagation()"
您可以通过将 $event
对象传递给 updateSubNav
方法和 stopPropagation
事件的 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();
}