自定义过滤器

<html>
<head>
    <script type="text/javascript" src="http://cdn.bootcss.com/jquery/1.11.1/jquery.min.js"></script>
    <script src="js/angular.min.js"></script>
    <script type="text/javascript">
        function windowScopedFilter (input) {
            var output = [];
            angular.forEach(input, function(v,k){
                if (v.phone.indexOf("555")>0) {
                    output.push(v);
                }
            });
            return output;
        }
        var myapp = angular.module('MyFilterApp', []);
        myapp.filter('myfilter', function() {
            return function(input, param1) {
                console.log("------------------------------------------------- begin dump of custom parameters");
                console.log("input=",input);
                console.log("param1(string)=", param1);
                var args = Array.prototype.slice.call(arguments);
                console.log("arguments=", args.length);
                if (3<=args.length) {
                    console.log("param2(string)=", args[2]);
                }
                if (4<=args.length) {
                    console.log("param3(bool)=", args[3]);
                }
                console.log("------------------------------------------------- end dump of custom parameters");
                // filter
                if (5<=args.length) {
                    return window[args[4]](input);
                }
                return input;
            };
        });
        myapp.controller('MyFilterController', ['$scope', function($scope) {
            $scope.friends = [{name:'John', phone:'555-1276'},
                {name:'Annie', phone:'800-BIG-MARY'},
                {name:'Mike', phone:'555-4321'},
                {name:'Adam', phone:'555-5678'},
                {name:'David', phone:'555-8765'},
                {name:'Mikay', phone:'555-5678'}];
        }]);
    </script>
</head>
<body ng-app="MyFilterApp">
<div ng-controller="MyFilterController">
    <table id="searchTextResults">
        <tr><th>Name</th><th>Phone</th></tr>
        <tr ng-repeat="friend in friends |myfilter:'param1':'param2':true:'windowScopedFilter'">
            <td>{{friend.name}}</td>
            <td>{{friend.phone}}</td>
        </tr>
    </table>
</div>
<hr>
</body>
</html>


//解释下自定义指令中的参数------将上述代码在浏览器打开的时候,同时打开控制台,看下控制台的输出内容。

 myapp.filter('myfilter', function() {
            return function(input, param1) {
                console.log("------------------------------------------------- begin dump of custom parameters");
                console.log("input=",input);
                console.log("param1(string)=", param1);
                var args = Array.prototype.slice.call(arguments);
                console.log("arguments=", args.length);
                if (3<=args.length) {
                    console.log("param2(string)=", args[2]);
                }
                if (4<=args.length) {
                    console.log("param3(bool)=", args[3]);
                }
                console.log("------------------------------------------------- end dump of custom parameters");
                // filter
                if (5<=args.length) {
                    return window[args[4]](input);
                }
                return input;
            };
        });
自定义指令myFiler的函数
return function(input, param1)
中的参数input就是在html页面中过滤器myFilter前面管道符前面的数组对象 friends,注意是friends而不是friend。而后面的参数和html页面中myFilter冒号后面的参数,可以有0个1个或多个参数,根据实际情况而定。
<tr ng-repeat="friend in friends |myfilter:'param1':'param2':true:'windowScopedFilter'">

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值