在我的模板中,我使用ng-repeat="obj in list"
。
list
是对象:
0: {
status : "active",
category : "animal"
}
...
默认情况下,我有$scope.filter = {}
当我处理点击时:我填写此$scope.filter
:
$scope.filter["categories"].push("animal");
$scope.filter["categories"].push("human");
如何使filter
中的ng-repeat
与数组$scope.filter["categories"]
一致,并找到category
对应$scope.filter["categories"]
的元素?
答案 0 :(得分:3)
您可以使用自定义过滤器。
app.filter('myFilter', function() {
return function(arrList, arrKeywords) {
var arrFilterList = [];
angular.forEach(arrList,function(oneVal,key){
if(arrKeywords.indexOf(oneVal)){
arrFilterList.push(oneVal);
}
})
return arrFilterList;
}
});
答案 1 :(得分:1)
创建一个像这样的自定义过滤器
angular.module("app",[])
.filter('sam',function(){
return function(item, arr){
return arr.find(function(obj){
return obj === item;
})
}
})
angular.module("app",[])
.filter('sam',function(){
return function(item, arr){
return arr.find(function(obj){
return obj === item;
})
}
})
.controller("ctrl",function($scope){
$scope.list = [{
status : "active",
category : "animal"
},{
status : "active",
category : "human"
},{
status : "active",
category : "bird"
}]
$scope.filter = {"categories":[]}
$scope.filter["categories"].push("animal");
$scope.filter["categories"].push("human");
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app" ng-controller="ctrl">
<div ng-repeat="obj in list ">
{{obj.category | sam : filter.categories}}
</div>
</div>