什么是 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>
如何使用 angularjs 过滤器
日期:2020-06-02 22:18:47 来源:oir作者:oir