2015-12-02 67 views
1

我有對象數組。當我需要篩選單vaue對象我這樣做是這樣的:如何過濾具有多個值的對象?

$scope.filteredByPhase = $filter('filter')($scope.allApps, {Phase:"All"}); 
$scope.allAppsBatch = $scope.filteredByPhase; 

但作爲一個選擇,我想通過在‘全部’或‘家’,以過濾由2「Phase`值的對象這種情況下如何過濾?

我想是這樣的:

$scope.filteredByPhase = $filter('filter')($scope.allApps, {Phase:("All" || "Home")}); 
$scope.allAppsBatch = $scope.filteredByPhase; 

但不是工程..任何一個指導我好嗎?

回答

2

在AngularJS中,您可以使用函數作爲過濾器中的表達式。在該函數中,您可以驗證條件並返回布爾值。所有falsy項目都被濾除了結果。所以,你可以做

$scope.filteredByPhase = $filter('filter')($scope.allApps, function (app) { 
    if (app.Phase == "All" || app.Phase == "Home") { 
     return true; 
    } 
    return false; 
}); 

閱讀更多:AngularJS Filter Documentation

0

使用$過濾器通過一個匿名比較函數。

$scope.filteredItems = $filter('filter')($scope.items, function (item) { 
    return (item.Phase == "all") ? true : false; 
}); 

請記住,你可以使用Array.filter還有:

$scope.items = [{ 
    Phase: "home" 
}, { 
    Phase: "all" 
}, { 
    Phase: "all" 
}, { 
    Phase: "home" 
}]; 
console.log($scope.items); 
$scope.filteredItems = $scope.items.filter(function (item) { 
    return (item.Phase == "all") ? true : false; 
}) 
console.log($scope.filteredItems) 

您也可以使用觸發鏈接多個過濾操作:

$scope.fi = $scope.i.filter(func1).filter(func2); 
相關問題