2015-08-15 49 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沒有提供任何錯誤信息或說明什麼瀏覽器,它聲稱「它不起作用」,所以我們知道他從一個較舊的瀏覽器收到錯誤,或者甚至可能有多個錯誤導致它「不工作」 。試圖排除所有可能性。 –

相關問題