什么是 AngularJs 过滤器?
从数组中选择项目的子集并将其作为新数组返回。
过滤器在许多方面与工厂或者服务非常相似。
但它有一个另外的优势,即一旦创建就在全局范围内运行。
正如我们之前所见,我们可以对 HTML 中的数据绑定或者直接在控制器或者指令中调用过滤器。
AngularJs 过滤器的基本用法
在 HTML 模板绑定中
[[ filter_expression | filter : expression : comparator ]] <!-- AngularJs Print Symbols are Interpolated to '[[', ']]'-->
在 JavaScript 中
$filter('filter')(array, expression, comparator)
AngularJs 自定义过滤器
如我们所知,AngularJs 允许我们创建自定义过滤器并像使用其他过滤器一样使用它。
为此,我们可以使用 filter(...) 函数在模块内部创建过滤器。
让我们看看如何创建自定义过滤器的语法筛选。
angular.module('MyModule').filter('myFilter', function() { return function(input, arg1, arg2) { var output; //code ... return output; } });
你可以在你的控制器、指令等中使用这个过滤器,或者在你的模板中使用我们给你的语法。
现在我们将创建一个过滤器(演示),它允许我们按用户列表的性别进行过滤。
<!DOCTYPE html> <html> <head> <title>www.onitroad.com</title> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js"></script> </head> <body data-ng-app="MyModule" data-ng-controller="MyController"> <select data-ng-model="filterGender"> <option value='male'>Male</option> <option value='female'>Female</option> </select> <ul> <li data-ng-repeat="user in users | gender:filterGender" data-ng-bind="user.name"></li> </ul> <script> angular.module('MyModule', []) .controller('MyController', function($scope){ $scope.users = [ {name: 'Mike', gender: 'male', age: 23}, {name: 'Jenifer', gender: 'female', age: 32}, {name: 'Tom', gender: 'male', age: 14}, {name: 'Hayk', gender: 'male', age: 18}, {name: 'Eliana', gender: 'female', age: 28} ]; }) .filter('gender', function(){ return function(users, gender){ if(!gender){ return users; } var arr = []; angular.forEach(users, function(v){ if(v.gender === gender){ arr.push(v); } }) return arr; } }) </script> </body> </html>
日期:2020-06-02 22:18:47 来源:oir作者:oir