控制器中的设置值有效,但角度表达式中的设置值不是吗?

时间:2014-10-13 18:31:18

标签: javascript html angularjs

以下代码无效 -

<div ng-init="selected=-1">
<ul ng-repeat="x in arr">
    <li ng-click="selected = $index">...</li>
</ul>

当我点击其中一个li时,所选的变量仍为-1。但以下确实有效 -

<div ng-init="selected=-1">
<ul ng-repeat="x in arr">
    <li ng-click="setTo($index)">...</li>
</ul>

$scope.setTo = function(index){selected = index;}

为什么?没有任何功能似乎已经改变。

2 个答案:

答案 0 :(得分:3)

ng-repeat指令为arr中的每个项创建自己的范围,因此当执行表达式selected = $index时,将在该范围上创建新属性selected,同时父母范围保持不变。

为什么selected属性在第一种情况下不会改变。

答案 1 :(得分:3)

the ngRepeat directive creates its own scope起,您需要在第一个示例中引用$parent.selected

<li ng-click="$parent.selected = $index">

http://plnkr.co/edit/9iUgp57KwvrlC3TDO3YC?p=preview