Angular:为什么$ index并不总是在ng-repeat内部进行评估?

时间:2015-11-07 14:19:19

标签: angularjs angularjs-directive angularjs-ng-repeat

以下是我的示例:http://jsfiddle.net/w2Ltohsq/

通过console.log记录的输入上的任何更改(和焦点)事件。所以,点击任何输入。

我希望控制台输出如下:

Object {index: 1, 1: Object}

但我明白了:

Object {index: 1, $index: Object}

所以$index评估了,而不是在几乎相同的地方进行评估。

ng-repeat="item in List track by index"ng-repeat="(i, item) in List"没有帮助。

编辑:感谢所有人,所有答案都是正确的,我正在用一个工作小提琴来回答。

3 个答案:

答案 0 :(得分:2)

您正在定义名为 $index的属性。如果您希望该属性的值为$index,则必须使用括号表示法:

input[$index] = {item: item}

Updated fiddle

答案 1 :(得分:2)

{ index: $index, $index: { item: item } }

是JavaScript对象文字,第二个$index是此对象的(字段)之一。密钥永远不会在对象文字中进行评估。值是。

就像在JavaScript中一样,如果你写

var i = 22;
var obj = {i : i};

你将拥有一个名为i的键的对象,其值为22.代码相当于

var obj = {'i' : i};

我也很难理解为什么你有这个getTopScope()函数。

答案 2 :(得分:1)

我相信这不是关于angular的$ index的问题,而是关于javascript中的对象文字的问题。我不相信你可以使用表达式作为对象文字语法中的关键。

Javascript expression to define object's property name?