2014-03-04 91 views
1

我有一個數組類對象如何篩選的對象與AngularJS

categoriesTree : [ 
    {name: 'cat1', id:1, selected : true}, 
    {name: 'cat2', id:2, selected : false}, 
    {name: 'cat3', id:3, selected : true}, 
    {name: 'cat4', id:4, selected : false}, 
    {name: 'cat6', id:6, selected : true}, 
] 

獲取所選類別的屬性我所做的:

selectedCategories = filterFilter($scope.categoriesTree, {selected:true}) 

這會給我:

categoriesTree : [ 
    {name: 'cat1', id:1, selected : true}, 
    {name: 'cat3', id:3, selected : true}, 
    {name: 'cat6', id:6, selected : true}, 
] 

但爲了減少POST數據發送,我只想要id屬性,所以我想要一個這樣的數組:

['1', '3', '6'] 

這可能與AngularJS過濾器有關嗎?

回答

2
res = categoriesTree.map(function(el) { return el.id; }); 

簡而言之,與良好的歐洲js。

要回答你的問題:沒有,有過濾器你不能,但它有可能與forEach

0

您可以創建自己的自定義過濾器angularjs不僅「過濾器」,還要「項目」您所設定成另一套。我認爲你絕對可以將每個類別對象都放入其ID中。

有關如何在angularjs中創建自定義過濾器的示例,請參閱here

0

您可以使用underscorejs的_.pluck方法。

selectedCategories = _.pluck(_.filter(categoriesTree, function(category) { 
    return category.selected; 
}), 'id'); 

返回所有id的其中相應selected值是true的值的陣列。