2015-05-31 92 views
0

有一個數組(項目數組)一組對象的具有財產

item_id: 
[{item_id:1,...},{item_id:2,...}...] 

有一組

item_ids: 
[2, 8, 10] 

如何使用angularjs的$過濾器,以項目組,其中item_id匹配那些item_ids陣列獲取的對象數組另一個數組。

回答

1

您可以使用自定義過濾器來執行此類過濾。你可以使用$filter服務,如果你想在代碼而不是模板中做到這一點。

Filter Guide

請參見下面的代碼。

var app = angular.module('app', []); 
 

 
app.controller('ctrl', function($scope, $filter) { 
 

 
    $scope.items = [{ 
 
    item_id: 1 
 
    }, { 
 
    item_id: 2 
 
    }, { 
 
    item_id: 3 
 
    }, { 
 
    item_id: 4 
 
    }]; 
 

 
    $scope.findList = [2, 4]; 
 
    $scope.findList2 = [3]; 
 

 
    // Using $filter service. 
 
    $scope.usingservice = $filter('findobj')($scope.items, [1, 3]) 
 
}); 
 

 
app.filter('findobj', function() { 
 

 
    return function(list, obj) { 
 

 
    return list.filter(function(l) { 
 
     if (obj.indexOf(l.item_id) >= 0) { 
 
     return true; 
 
     } 
 
    }); 
 

 
    }; 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="app"> 
 
    <div ng-controller="ctrl"> 
 
    <div ng-repeat="item in items | findobj: findList"> 
 
     {{item}} 
 
    </div> 
 
    <hr/> 
 
    <div ng-repeat="item in items | findobj: findList2"> 
 
     {{item}} 
 
    </div> 
 
    <hr/>{{usingservice}} 
 
    </div> 
 
</div>

+0

通緝使用$過濾器來做到這一點的代碼,如在你的榜樣。不知道數組可以用來代替過濾條件。另一部分(使用ng-repeat)也非常有用。 – mssuley

相關問題