AngularJS不会触发外部点击事件(嵌套的ng-click)

时间:2017-03-31 07:31:35

标签: javascript angularjs angularjs-ng-click event-propagation

<ul>
    <li ng-init="hide1={state1:true}" ng-repeat="(id,name) in tree_root_list" ng-click="click_e_s_0(id,hide1)">
        {$ name[1] $}
        <ul ng-hide=hide1.state1>
            <li ng-init="hide2={state2:true}" ng-repeat="id in e_s_1" ng-click="click_e_s_1(hide2)">
                &ensp;{$ id $}
            </li>
        </ul>
    </li>
</ul>

当我触发click_e_s_1(hide2)事件时,Angular会调用click_e_s_0(id,hide1)事件。

实际上我不想触发click_e_s_0(id,hide1)事件。

2 个答案:

答案 0 :(得分:2)

您正在尝试触发另一个ng-clickclick_e_s_1)中的ng-clickclick_e_s_0)。如果您只想触发符合条件的那个,则需要父级的stop the propagation

内联解决方案

<li ... ng-click="click_e_s_1(hide2); $event.stopPropagation()">

在功能解决方案

<li ... ng-click="click_e_s_1(hide2, $event)">

并更新click_e_s_1

$scope.click_e_s_1 = function(hide2, $event) {
    $event.stopPropagation(); 
    // Your stuff   
}

答案 1 :(得分:0)

使用

ng-click="click_e_s_1(hide2, $event)"

并在click_e_s_1函数中,使用

$event.stopPropagation();