2015-08-15 91 views
0

ng-repeat<li>元素:如何通过索引获取ng-repeat中的元素?

<li ng-repeat="item in filtered =(categorySelect | filter:searchinput)" ng-class="categorySelect[$index]checked" 

我试图让从物体categorySelect属性checked像为:

categorySelect[$index]checked 

但它不工作。

+1

这不是一个有效的语法。你想实现什么?你是否意识到索引将取决于过滤器?您正在使用已过滤数组中元素的索引来访问未过滤的数组。你为什么不使用'item.checked'? –

回答

1

因为你的JS语法无效。尝试下列操作之一:

categorySelect[$index].checked 

categorySelect[$index]['checked'] 

或最好避免$指数干脆:

item.checked 

而且你使用纳克级的错误,它的工作原理是这样的:

ng-class="{myClass: item.checked}" 

这将添加“myCla ss“,如果checked属性的计算结果为true,并且如果不是,则移除该类。

另请注意,使用“点符号”和保留的关键字,如“checked”可以打破旧版浏览器,如IE9。如果发生这种情况,并且支持IE是必要的,那么尝试使用我在第二个示例中给出的数组语法或使用与“checked”不同的属性名称。

+0

如何“检查”一个保留的JavaScript关键字?它不在微软自己的列表中:https://msdn.microsoft.com/library/0779sbks%28v=vs.94%29.aspx –

+0

它不是技术上的,但多年前IE得到了规范错误,并将各种内置程序视为保留关键字,即使在有效的上下文中使用。见例如 - http://stackoverflow.com/a/8814616/2279347我不知道如果“检查”导致这个问题的事实,但它值得一提。如果OP没有提供任何错误信息或说明什么浏览器,它声称“它不起作用”,所以我们知道他从一个较旧的浏览器收到错误,或者甚至可能有多个错误导致它“不工作” 。试图排除所有可能性。 –