AngularJS не запускает событие внешнего клика (вложенный ng-клик)

<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 ответа

Решение

Вы на самом деле пытаетесь вызвать ng-click (click_e_s_1Воплощаться в другом ng-click (click_e_s_0). Если вы хотите вызвать только скрытый, вам нужно остановить распространение родительского:

Встроенное решение

<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   
}

Использование

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

и в функции click_e_s_1 используйте

$event.stopPropagation();
Другие вопросы по тегам