2017-06-02 115 views
0

我有以下幾點:

<li ng-repeat"item in items" ng-if="item.type && item.type=='image'"> 
<span ng-class="{'selected':$first}">{{item.title}}</span> 
</li> 

我想要做的是顯示所有項目冠軍只有當它的類型的圖像,並具備第一項有類selected

問題出在ng-if。如果第一個項目不是圖像類型,則顯示的實際第一個項目不具有selected類。

我該如何更新?

+0

'item in item'?不要把自己和Angular混淆在一起。列表名應該是複數理想 – tanmay

+0

錯誤輸入,謝謝! – Katie

+2

在迭代之前過濾集合。使用過濾器或組件中。項目中的項目|過濾器:{type:'image'}' –

回答

1

您可以創建一個僅包含圖像的新列表。然後ng-repeat比是:

$scope.onlyImages = $scope.items.filter(function(item) { 
    return item.type && item.type === 'image'; 
}); 

<li ng-repeat"item in onlyImages"> 
    <span ng-class="{'selected':$first}">{{item.title}}</span> 
</li> 

你也可以做到這一點與過濾模板,但因爲它運行在每個週期消化它會更昂貴。

+0

啊當然!謝謝。只是想知道,如果我有一個大集合用於一系列視圖,這樣做會很昂貴嗎? (即:類型:圖像;類型:視頻;類型:文本等) – Katie

+1

昂貴的性能?還是記憶?如果您的清單很大,則可能需要一段時間才能過濾,但至少我們只會執行一次。在記憶方面,我們只是用圖像創建一個新列表,但實際上並沒有複製圖像。我們只複製參考文獻。 –

+2

這將比使用ng進行篩選更有效率**如果從視圖中進行篩選。 –