Javascript ng click事件绑定到angular js中的子li

Javascript ng click事件绑定到angular js中的子li,javascript,angularjs,haml,angularjs-ng-click,Javascript,Angularjs,Haml,Angularjs Ng Click,嘿,我正在使用ng click指令在li上绑定MENUICCLICK($event)函数。但也会绑定到子li。 代码如下 %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

嘿,我正在使用ng click指令在li上绑定MENUICCLICK($event)函数。但也会绑定到子li。 代码如下

%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
In html list,
模板是用HAML编写的。 我不知道为什么

In html list,

感谢任何帮助

试试他的帮助
e.stopPropagation()
我对此不确定

%li.icons-briefcase-static{'ng-click'=>"menuIconClick($event);$event.stopPropagation();"} 
In html list,

尝试将icon&icon click事件作为单独的元素,而不是父元素。DOM事件在层次结构中冒泡,因此如果父元素具有
ng click
处理程序,则单击任何子元素也将触发该父click处理程序,除非停止事件传播

In html list,
您可以停止事件传播,类似于:

In html list,

In html list,
或者更改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
In html list,
试试这个:

In html list,
ng click=“menuIconClick($event)”

In html list,
$scope.menuIconClick=函数(ev){

In html list,

}

是否只是因为一个
  • 在另一个内部,所以单击事件“冒泡”到层次结构中?@chandu抱歉,没有代码fiddle我已经给了$event.stopPropagation();但该函数仍然在child li click上被调用。您可以尝试使用ng click active=“$first”吗?这完全是为了我。已停止在父标记上设置的其他单击事件。感谢您的响应。我无法更改结构,但当我使用StopRopAgation时,它对我无效。您是否在子标记上使用StopRopAgation?不是像@chandu shows这样的父级?我已经像chandu提到的那样给出了=>%li.icons公文包静态{'ng-click'=>“menuIconClick($event);$event.stopPropagation();“}是的,这对你没有任何帮助。您希望对子元素调用stopPropagation<代码>%li{'ng-click'=>'$event.stopPropagation();'}所有站点
    In html list,