2014-03-04 91 views
11

我有下面的代码:父DIV也是孩子DIV NG单击

 <table class="table"> 
      <tr> 
       <th>Name___</th> 
      </tr> 
      <tr ng-repeat="app in apps" 
       ng-click="go('/editApp/' + plugin.name);"> 

       <td> 
        <span>{{app.name}}</span> 
       </td> 
       <td style="width: 100px;"> 
        <i class="glyphicon glyphicon-pencil" 
           ng-click="openPopup(app)"></i> 
       </td> 
      </tr> 
     </table> 

当我点击OpenPopup,也是go()方法烧制,我怎么能做到这一点,如果我点击弹出窗口弹出只会触发?

+2

从'tr' – Lekhnath

+0

能很好地去除'NG-click',如果你点击你实际上点击过其父过一个子元素。这被称为**事件传播**,尤其是**事件冒泡** –

回答

32

此执行,因为嵌套在<tr><td>,并单击首先解雇openPopup()

然后烧制go()。您可以使用$event.stopPropagation()将停止事件传播至<tr>。 尝试

 <table class="table"> 
     <tr> 
      <th>Name___</th> 
     </tr> 
     <tr ng-repeat="app in apps" 
      ng-click="go('/editApp/' + plugin.name);"> 

      <td> 
       <span>{{app.name}}</span> 
      </td> 
      <td style="width: 100px;"> 
       <i class="glyphicon glyphicon-pencil" 
          ng-click="openPopup(app);$event.stopPropagation()"></i> 
      </td> 
     </tr> 
    </table> 
+0

优秀!工作得很好。 –