AngularJs过滤器

在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就相当于传递过来的内容。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容