美文网首页
AngularJs过滤器

AngularJs过滤器

作者: 不要和我名字一样 | 来源:发表于2017-03-16 18:21 被阅读67次

    在AngularJS中使用过滤器格式化展示数据,在“{{}}”中使用“|”来调用过滤器,使用“:”传递参数。

    1、内置过滤器

    • currency:将数值格式化为货币格式
    <body ng-app="app">
    <ul ng-controller="DemoController">
        <li>默认为美元符号:{{price|currency}}</li>
        <li>用冒号传值¥:{{price|currency:'¥'}}</li>
    </ul>
    <!--引入angularjs-->
    <script src="js/angular.min.js"></script>
    <script>
        var app = angular.module("app",[]);
        app.controller("DemoController",['$scope',function ($scope) {
            $scope.price = 11.11;
        }])
    </script>
    </body>
    
    将数值格式化为货币
    • date:日期格式化,年(y)、月(M)、日(d)、星期(EEEE/EEE)、时(H/h)、分(m)、秒(s)、毫秒(.sss),也可以组合到一起使用。
    <body ng-app="app">
    <ul ng-controller="DemoController">
        <li>时间:{{now|date:'yyyy-MM-dd h:mm:ss '}}</li>
    </ul>
    <!--引入angularjs-->
    <script src="js/angular.min.js"></script>
    <script>
        var app = angular.module("app",[]);
        app.controller("DemoController",['$scope',function ($scope) {
            $scope.now = new Date();
        }])
    </script>
    </body>
    
    格式化时间
    • filter:在给定数组中选择满足条件的一个子集,并返回一个新数组,其条件可以是一个字符串、对象、函数
    <body ng-app="app">
    <ul ng-controller="DemoController">
        <!--过滤出items数组中含有s的字符串-->
        <li>{{items|filter:'s'}}</li>
        <!--过滤出年龄为20的人-->
        <li>{{student|filter:{age:20} }}</li>
    </ul>
    <!--引入angularjs-->
    <script src="js/angular.min.js"></script>
    <script>
        var app = angular.module("app",[]);
        app.controller("DemoController",['$scope',function ($scope) {
            $scope.items = ['html','js','jq','css','student'];
            $scope.student = [
                {name:'小明',age:19},
                {name:'小李',age:20},
                {name:'张三',age:20}
            ]
        }])
    </script>
    </body>
    
    过滤字符串和对象
    • json:将Javascrip对象转成JSON字符串
    <body ng-app="app">
    <ul ng-controller="DemoController">
        <li>转化为json对象:{{student|json}}</li>
    </ul>
    <!--引入angularjs-->
    <script src="js/angular.min.js"></script>
    <script>
        var app = angular.module("app",[]);
        app.controller("DemoController",['$scope',function ($scope) {
            $scope.student = [
                {name:'小明',age:19},
                {name:'小李',age:20},
                {name:'张三',age:20}
            ]
        }])
    </script>
    </body>
    
    转化为json
    • limitTo:取出字符串或数组的前(正数)几位或后(负数)几位
    <body ng-app="app">
    <ul ng-controller="DemoController">
        <li>截取数组items的第一个和最后一个元素:{{items|limitTo:1}},{{items|limitTo:-1}}</li>
    </ul>
    <!--引入angularjs-->
    <script src="js/angular.min.js"></script>
    <script>
        var app = angular.module("app",[]);
        app.controller("DemoController",['$scope',function ($scope) {
            $scope.items = ['html','js','jq','css','student'];
        }])
    </script>
    </body>
    
    Paste_Image.png
    • lowercase:将文本转换成小写格式,uppercase:将文本转换成大写格式
    <body ng-app="app">
    <ul ng-controller="DemoController">
        <li>将str2转化为小写:{{str2|lowercase}}</li>
        <li>将str1转化为大写:{{str1|uppercase}}</li>
    </ul>
    <!--引入angularjs-->
    <script src="js/angular.min.js"></script>
    <script>
        var app = angular.module("app",[]);
        app.controller("DemoController",['$scope',function ($scope) {
            $scope.str1 = 'ddddddddddddhello';
            $scope.str2 = 'HELLODDDDDDDDDDDDDDDDDDDDDDDDDDDD';
        }])
    </script>
    </body>
    
    字符串大小写转化
    • number:数字格式化,可控制小位位数
    <body ng-app="app">
    <ul ng-controller="DemoController">
      <!--将str3转化为数字,并保留四位小数-->
        <li>{{str3|number:4}}</li>
    </ul>
    <!--引入angularjs-->
    <script src="js/angular.min.js"></script>
    <script>
        var app = angular.module("app",[]);
        app.controller("DemoController",['$scope',function ($scope) {
            $scope.str3 = '45678.22'
        }])
    </script>
    </body>
    
    Paste_Image.png
    • orderBy:对数组进行排序,第2个参数可控制方向
    <body ng-app="app">
    <ul ng-controller="DemoController">
        <li>{{items|orderBy:'':true}}</li>
        <!--如果数组中村的时对象的话,可以按照某个属性值排序,true是降序,false是升序-->
        <li>{{student|orderBy:'age':true}}</li>
    </ul>
    <!--引入angularjs-->
    <script src="js/angular.min.js"></script>
    <script>
        var app = angular.module("app",[]);
        app.controller("DemoController",['$scope',function ($scope) {
            $scope.items = ['html','js','jq','css','student'];
            $scope.student = [
                {name:'小明',age:19},
                {name:'小李',age:20},
                {name:'张三',age:20}
            ]
        }])
    </script>
    </body>
    
    Paste_Image.png

    2、自定义过滤器

    当我们内置的过滤器不能满足我们的需求时,我们可以自定义过滤器,AngularJs也支持自定义过滤器。

     app.filter('capitalize',function () {
            return function () {
            }
        });
    

    使用app.filter()方法 自定义过滤器,其中两个参数,一个表示过滤器的名称,一个表示返回的函数,接下来,写一个小Demo来定义一个把英文字符串首字母转化为大写的过滤器。

    <body ng-app="app">
    <ul ng-controller="demoController">
        <h4>将首字母转化为大写:{{info|capitalize}}</h4>
    </ul>
    <!--引入angularjs-->
    <script src="js/angular.min.js"></script>
    <script>
        var app = angular.module("app",[]);
    //    定义过滤器,第一个参数表示过滤器的名称
        app.filter('capitalize',function () {
            return function (input) {
    //    将字符串的第一个字母变为大写
               return input[0].toUpperCase()+input.slice(1)
            }
        });
        app.controller("demoController",["$scope",function ($scope) {
              $scope.info ="my name is huangsen";
        }])
    </script>
    </body>
    

    在这里需要传递一个input参数来接收,本来过滤器的哪个竖线就是相当于一个管道,这里的input就相当于传递过来的内容。

    相关文章

      网友评论

          本文标题:AngularJs过滤器

          本文链接:https://www.haomeiwen.com/subject/xzejnttx.html