问题描述
控制器:$scope.dataList=[
{'dataClass':'0','dataName':'A1'},{'dataClass':'0','dataName':'A2'},{'dataClass':'1','dataName':'B1'},{'dataClass':'1','dataName':'B2'},{'dataClass':'2','dataName':'C1'},{'dataClass':'2','dataName':'C2'}
]HTML模板:<li ng-repeat='item in dataList |filter :{’dataClass’:’0’}'>{{item.dataName}}</li>页面展示将循环过滤出dataList数组中dataClass为’0’的A1,A2;现在的需求是dataClass过滤的值是一个变量设为varity,而ng-repeat='item in dataList |filter :{’dataClass’:varity}',又不生效,请问如何实现该需求
问题解答
回答1:帮你写了个过滤器,把指定的dataClass去掉了:
angular.module(’common’, []).filter(’myFilter’, function () {return function (collection, keyname,value) { var output = []; angular.forEach(collection, function (item) {//过滤数组中值与指定值相同的元素if(item[keyname]!=value){ output.push(item);} }); return output;} });
<p ng-app='myApp' ng-controller='myCtrl'> <p ng-repeat='x in items | myFilter: ’dataClass’: dcValue '>{{x.dataClass}}---{{x.dataName}} </p></p>
过滤器接收3个参数,原数组,要过滤的key,以及指定的key值。
回答2:repeat='item in dataList |filter :{’dataClass’:{{varity}} }'
加花括号就可以了