2015-11-07 68 views
0

以下是我的示例: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"没有帮助。

编辑:谢谢大家,所有的答案都是正确的,我用一个工作小提琴upvoting答案。

回答

2

您正在定义属性,名称为$index。如果你想将财产进行命名的$index的价值,你必须用括号标记:

input[$index] = {item: item} 

Updated fiddle

+0

咄,我试了一下问这样的''输入[$指数] [ '项目'] = item''之前,并没有工作。在这种情况下,确定js会像Perl一样在动态创建所需的结构,因此它也是一些角度特性。 – skaurus

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

是一个JavaScript对象常量,而第二$index是的一个(字段)此对象。键不会在对象字面上评估。值是。

正如在JavaScript中,如果你写

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

你就会有一个名为i一个键一个对象,它的值是22码,相当于

var obj = {'i' : i}; 

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

+0

我相信'getTopScope()'方法是为了避免需要走'$ parent'链 - 不使用对象作为模型的结果,'ng-model'指向它的属性。这是“如果你的模型名称中没有一个点,你做错了._”https://www.youtube.com/watch?v=ZhfUv0spHCY&feature=youtu.be&t=32m51s) – JAAulde

+0

@JAAulde你大概是正确的。但实际上,在模型中有一个点(好吧,它是一个括号,但它有相同的效果):'input [$ index]'。所有的OP需要将'$ scope.input = [];'添加到控制器。 –

相关问题