Angularjs AngluarJS:在控制器中使用过滤器
我有一个控制器:Angularjs AngluarJS:在控制器中使用过滤器,angularjs,Angularjs,我有一个控制器: angular.module('myApp', []) .controller('testCtrl', ['$scope', '$filter', function($scope, $filter) { $scope.users = [{ name: "Hanna", gender: "female" }, { name: "Martin", gender: "male"
angular.module('myApp', [])
.controller('testCtrl', ['$scope', '$filter',
function($scope, $filter) {
$scope.users = [{
name: "Hanna",
gender: "female"
}, {
name: "Martin",
gender: "male"
}, {
name: "Kim",
gender: "transgender"
}];
$scope.traditionalUsers = $filter('filter')($scope.users,femaleOrMale());
function femaleOrMale(user) {
return ['female','male'].indexOf(user.gender);
}
}
]);
我想筛选属性与数组匹配的用户。这是行不通的。看见如何正确调用筛选器?删除()
在中写入femaleOrMale()
时,调用的是femaleOrMale
函数,没有任何参数
$scope.traditionalUsers = $filter('filter')($scope.users, femaleOrMale());
将函数本身传递给过滤器所写的是
$scope.traditionalUsers = $filter('filter')($scope.users, femaleOrMale);
这将使页面不再抛出错误,但是它不会以传统用户的身份显示男性
和女性
,我怀疑这正是您想要的。您需要从femaleOrMale
过滤器返回一个布尔值,indexOf
返回匹配的索引,如果没有匹配,则返回-1
,因此比较-1
return ['female','male'].indexOf(user.gender) != -1;
angular.module('myApp',[])
.controller('testCtrl',['$scope','$filter',
函数($scope$filter){
$scope.users=[{
姓名:“汉娜”,
性别:“女性”
}, {
姓名:“马丁”,
性别:“男性”
}, {
姓名:“金”,
性别:“变性人”
}];
$scope.traditionalUsers=$filter($filter')($scope.users,femaleOrMale);
函数femaleOrMale(用户){
返回['female','male'].indexOf(user.gender)!=-1;
}
}
]);代码>
男性和女性用户:
{{traditionalUsers}}
@EricC请考虑导入您正在使用的特定过滤器,即filterFilter
而不是$filter
,以简化单元测试。