如何通过两个参数和数组对ng-repeat进行排序?

时间:2017-03-07 17:43:32

标签: angularjs

在我的模板中,我使用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"]的元素?

2 个答案:

答案 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>