2014-06-05 20 views
0

我有一個產品JSON文件,JSON文件中的每個產品都有自己的一組標籤(其中一些在其他產品中共享!)。是否可以使用ng-repeat創建數組中找到的標籤列表,然後點擊這些生成的標籤,然後通過點擊標籤過濾頁面上的項目?每個屬性只應在列表中出現一次,不應有重複的屬性。這是可能的還是將過濾器必須是硬編碼?對於Angular來說,我還很新,所以不確定它的侷限性。按陣列分類的角度篩選器

回答

1

創建一個函數來遍歷所有產品中的所有屬性,如果該屬性不存在,則將該屬性添加到數組中。

$scope.getAttributes = function(){ 
    var attributes = []; 
    angular.forEach($scope.data, function(item){ 
    angular.forEach(item.attributes, function(attribute){ 
     if(attributes.indexOf(attribute) == -1) 
     attributes.push(attribute); 
    }) 
    }) 
    return attributes; 
} 

現在你可以在HTML創建的標籤列表這些屬性:

<div ng-repeat="a in getAttributes()" ng-click="setFilter(a)">{{a}}</div> 

點擊屬性將設置一個selectedAttribute變量,它是用來過濾產品列表:

<table> 
    <tdata> 
     <tr ng-repeat="d in data | filter:{attributes: selectedAttribute}"> 
     <td>{{d.name}}</td> 
     <td>{{d.attributes}}</td> 
     </tr> 
    </tdata> 
</table> 

Plunker Demo

+0

這是偉大的,但當涉及到實施它我自己,代碼不會超過$ scope.getAttributes中的第4行?將它複製到蹦牀的T ... – leaksterrr

+0

什麼是錯誤?你在使用Angular的最新版本嗎? – Jerrad

+0

nvm,我修復了它,謝謝! – leaksterrr