2016-03-02 31 views
0
<ul> 
    <li ng-click="setSelectedItem(member.id)">test 
    <ul> 
     <li ng-click="setSelectedItem(member.id)">test 2 
     <ul> 
      <li ng-click="setSelectedItem(member.id)">inner test2 
      </li> 
     </ul> 
     </li> 
    </ul> 
    </li> 
</ul> 

上面的树结构是由两个指令通过使用this堆栈溢出问题产生的。ul-li里面ng-click多次射击

测试被点击时setSelectedItem()被调用一次。当test2被点击setSelectedItem()被调用两次。当内部测试2被点击setSelectedItem()被称为三次。

任何人都可以帮助我解决这个问题。点击内部li标签时,我只需要点击一次该点击。谢谢

+0

尝试向上冒泡 – guradio

+0

U可以附上加上'e.stopPropagation()'停事件NG-点击指令父UL和使用event.target财产 – Vijaykrish93

+0

显示您的setSelectedItem功能代码访问的目标。 – Sumanta736

回答

2

要停止事件传播,请使用下面的代码。

<li ng-click="setSelectedItem(member.id); $event.stopPropagation();">test</li> 
+0

感谢您的帮助 –

+0

欢迎,juz回馈社区! –

2

使用$event.stopPropagation();。为了防止点击事件给父母。

<ul> 
    <li ng-click="setSelectedItem(member.id);$event.stopPropagation();">test 
    <ul> 
     <li ng-click="setSelectedItem(member.id);$event.stopPropagation();">test 2 
     <ul> 
      <li ng-click="setSelectedItem(member.id);$event.stopPropagation();">inner test2 
      </li> 
     </ul> 
     </li> 
    </ul> 
    </li> 
</ul> 
+0

第一级没有必要 – Grundy

+2

@Grundy刚刚添加为预防措施,因为我们不知道什么是父元素及其绑定。 – RRK

+0

@RejithRKrishnan谢谢你的回答 –