我在ngRepeat复制的元素上有ngClick和ngClass:
<li
ng-class="{'active': $parent.mem.A == $key, 'not-active': $parent.mem.A && $parent.mem.A != $key}"
ng-repeat="($key, A) in As"
ng-click="$parent.mem.A = $key">
在li
内,我有一个更改$parent.mem.A
onClick值的按钮:
<button ng-click="$parent.mem.A = $parent.findInHash('prev','A')">Activate previous</button>
findInHash()
返回预期值,当我逐步执行angular时,来自ngEventDirective的$ scope。$ apply()中的值是正确的;但在某个地方,它迷路了。
答案 0 :(得分:4)
在您的代码中,当您单击按钮
时,将执行所有ng-click您只需要像下面的示例一样停止事件传播
$scope.findInHash = function ($event, dir, attr) {
$event.stopPropagation();
$event.preventDefault();
...
<button ng-click="$parent.mem.A = $parent.findInHash($event,'prev','A')">...
答案 1 :(得分:0)
当您点击button
时,点击事件会传播到li
元素,同时也会执行ng-click
。
在ng-click
中,$event
变量可用,因此您可以轻松地使用它来停止事件传播:
<button ng-click="$parent.mem.A = $parent.findInHash('prev','A');$event.stopPropagation();">Activate previous</button>