嘿,我正在使用ng-click指令在li上绑定menuIconClick($event(函数。但对孩子李也有约束力。代码如下
%div.sideNavBar
%ul.navBar
%li.icons-briefcase-static{'ng-click'=>"menuIconClick($event)"} // binding here only
%ul.subMenu
%li All sites // but gets call here also
%li{'ng-repeat'=>"site in sites"}
{{site.name}}
%li.icons-users-disabled
%div.lock.icons-lock-disabled
模板在HAML中。我不明白为什么?
感谢的任何帮助
尝试将图标&图标单击事件作为单独的元素,而不是父元素。DOM事件在层次结构中冒泡,因此,如果父元素有ng-click
处理程序,那么单击任何子元素也会触发该父单击处理程序,除非停止事件传播。
您可以停止事件传播,类似于:
AngularJS点击停止传播
或者更改DOM结构,使公文包图标不是子菜单的父菜单:
%div.sideNavBar
%ul.navBar
%li
%a.icons-briefcase-static{'ng-click'=>"menuIconClick($event)"} // no longer a parent
%ul.subMenu
%li All sites // click here won't bubble up to ng-click
%li{'ng-repeat'=>"site in sites"}
{{site.name}}
%li.icons-users-disabled
%div.lock.icons-lock-disabled
试试他的。e.stopPropagation()
我对此不确定。
%li.icons-briefcase-static{'ng-click'=>"menuIconClick($event);$event.stopPropagation();"}
试试这个:
In html list,
ng click="menuIconClick($event(">
In JS function,
$scope.menuIconClick=函数(ev({
ev.stopPropagation();
}