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)">
 {$ 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();