angularjs 自定义过滤器

过滤器格式

模块名称.filter('过滤器名字',function(){
  return function(被过滤数据,条件1,条件2,。。。。){
    //过滤操作
  }
})

一、不带条件的过滤器

使用方式:
*           (1)HTML中:<div>{{被过滤的数据 | 过滤器的名字}}</div>   //跟内置过滤器一样的方式
*           (2)js中:变量 = $filter("过滤器的名字")(被过滤的code数据)    //一样的调用方式
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<script src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script>
<body>
<div ng-app="myApp" ng-controller="myCtrl">
姓名: {{ msg | reverse }} //在html中使用
      {{msg2}}
</div>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope,$filter) {
     $scope.msg = "Runoob";
    var msg = 'Hello'
     $scope.msg2 = $filter('reverse')( msg) //在js中使用
});
app.filter('reverse', function() { //可以注入依赖
    return function(msg) {
        return msg.split("").reverse().join("");
    }
});
</script>
</body>
</html>

二、带条件的过滤器

使用方式:
*           (1)HTML中:<div>{{被过滤的数据 | 过滤器的名字:条件1:条件2:。。。}}</div>   //跟内置过滤器一样的方式
*           (2)js中:变量 = $filter("过滤器的名字")(被过滤的code数据,条件1,条件2,。。。)    //一样的调用方式
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="https://cdn.bootcss.com/lodash.js/4.17.4/lodash.core.js"></script>
    <script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>  
    </head>  
  <body>
<div ng-app="myApp" ng-controller="customersCtrl"> 
<table>
  <tr ng-repeat="x in users" ng-show = "$index | filterName:x.Name:names">//在html中調用過濾器
    <td>{{$index}}</td>
    <td>{{ x.Name }}</td>
    <td>{{ x.Country }}</td>
    <td>{{ x.City }}</td>
  </tr>
</table>
</div>

<script>
var app = angular.module('myApp', []);
app.controller('customersCtrl', function($scope,$filter) {
        $scope.users = [
            {"Name":"Alfreds","City":"Berlin","Country":"Germany"},
            {"Name":"Ana","City":"México D.F.","Country":"Mexico"},
            {"Name":"Ana","City":"México D.F.","Country":"Mexico"},
            {"Name":"Beverages","City":"London","Country":"UK"},
            {"Name":"Ana","City":"México D.F.","Country":"Mexico"},
        ]
     $scope.names = ["Alfreds","Ana","Ana","Beverages","Ana"]     
});
app.filter('filterName',function(){
    return function(index,userName,names){
        console.log(index)
        console.log(names.indexOf(userName))
         if(index === names.indexOf(userName)) return true
              else return false
    }
})
</script>

</body>
</html>
【总结内置过滤器的使用方式】
 (1)在HTML中一般格式为:  {{被过滤的数据 | 过滤器名称:条件1:条件2.。。。}}    ;过滤条件之间用‘:’隔开.這裡要注意是英文符号
 (2)在代码中一般格式为:  变量 = $filter("过滤器名称")(被过滤数据,过滤条件1,过滤条件2,。。。。。。)
 
【自定义过滤器】
 (1)定义格式:
           model.filter(filterName,function(){
              return function(参数1,参数2,参数3.。。。。参数N){
                  //过滤器处理部分
               }
           })
      model:模块名称
      filterName: 过滤器名称
      参数1:被过滤的数据
      参数2:一般为过滤条件,可以有多个,后面的参数3一直到参数N都是,根据需要添加。
原文地址:https://www.cnblogs.com/qiu-Ann/p/7880065.html