AngularJS中的过滤器(filter)

  AngularJS中的过滤器是用于对数据的格式化,或者筛选的函数,可以直接通过以下语法使用:

  {{expression|filter}}

  {{expression|filter1|filter2}}

  {{expression|filter1:param1,param2,...|filter2}

  过滤器的种类有number,currency,date,json,limitTo,lowercase,uppercase,filter,orderBy。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
<!DOCTYPE html>
<html ng-app="app">
<head>
    <meta charset="utf-8">
</head>
<body ng-app="app">
    <div ng-controller="Controller1">
        <p>{{1234567890 | number}}</p>
        <!--显示1,234,567,890-->
        <p>{{1234.56789 | number:3}}</p>
        <!--显示1,234.568,保留3位小数-->
        <p>{{1234.56789 | currency}}</p>
        <!--显示$1,234.57,货币,默认的前缀是美元符号-->
        <p>{{1234.56789 | currency:'¥'}}</p>
        <!--显示¥1,234.57-->
        <p>{{today | date:'medium'}}</p>
        <!--显示Jun 28, 2015 3:45:54 PM-->
        <p>{{today | date:'short'}}</p>
        <!--显示6/28/15 3:45 PM-->
        <p>{{today | date:'fullDate'}}</p>
        <!--显示Sunday, June 28, 2015-->
        <p>{{today | date:'longDate'}}</p>
        <!--显示June 28, 2015-->
        <p>{{today | date:'shortDate'}}</p>
        <!--显示6/28/15-->
        <p>{{today | date:'shortTime'}}</p>
        <!--显示3:45 PM-->
        <p>{{today | date:'mediumTime'}}</p>
        <!--显示3:45:54 PM-->
        <p>{{today | date:'yyyy-MM-dd HH:mm:ss'}}</p>
        <!--显示2015-06-28 15:45:54-->
        <p>{{['a','b','c','d','e'] | limitTo:3}}</p>
        <!--显示["a","b","c"],截取前3位-->
        <p>{{['a','b','c','d','e'] | limitTo:-3}}</p>
        <!--显示["c","d","e"],截取后3位-->
        <p>{{'Hello World' | lowercase}}</p>
        <!--显示hello world-->
        <p>{{'Hello World' | uppercase}}</p>
        <!--显示HELLO WORLD-->
        <p>{{data.phone | filter:'le'}}</p>
        <!--显示[{"name":"iPhone","company":"Apple"}],只匹配value值-->
        <p>{{data.phone | filter:{company:'A'} }}</p>
        <!--显示[{"name":"iPhone","company":"Apple"},{"name":"HUAWEI P8","company":"HUAWEI"}],company中有A就会匹配到-->
        <p>{{data.phone | orderBy:'name'}}</p>
        <!--显示[{"name":"Galaxy S5","company":"Sumsung"},{"name":"HUAWEI P8","company":"HUAWEI"},{"name":"iPhone","company":"Apple"}],以name的值做排序,默认是从小到大排序-->
        <p>{{data.phone | orderBy:-'name'}}</p>
        <!--显示[{"name":"iPhone","company":"Apple"},{"name":"Galaxy S5","company":"Sumsung"},{"name":"HUAWEI P8","company":"HUAWEI"}],反序-->
        <p>{{[2,24,13,89,3,8,41,9,10] | filter:checkNum}}</p>
        <!--自定义的过滤器,显示[2,3,8,9,10],定义见90~95行-->
    </div>
    <script src="../JS/angular.min.js"></script>
    <script type="text/javascript">
    angular.module('app', [])
        .controller('Controller1', function($scope, $filter) {
            $scope.today = new Date;
            $scope.data = {
                phone: [{
                    name: 'iPhone',
                    company: 'Apple'
                }, {
                    name: 'Galaxy S5',
                    company: 'Sumsung'
                }, {
                    name: 'HUAWEI P8',
                    company: 'HUAWEI'
                }]
            };
            var jsonString = $filter('json')($scope.data);
            console.log(jsonString);
            /* console输出json格式的data
            {
                "phone": [
                  {
                    "name": "iPhone",
                    "company": "Apple"
                  },
                  {
                    "name": "Galaxy S5",
                    "company": "Sumsung"
                  },
                  {
                    "name": "HUAWEI P8",
                    "company": "HUAWEI"
                  }
                ]
            }
            */
            //自定义过滤器
            $scope.checkNum = function(num) {
                //>10的不保留
                if (num > 10) return false;
                else return true;
            }
        });
    </script>
</body>
</html>

       除了上面自定义过滤器的方法外,还有两种专门的方法。

       第一种 module.filter(name,filterFactory)

       第二种 @$filterProvider.register();


第一种的例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<!DOCTYPE html>
<html ng-app="app">
<head>
    <meta charset="utf-8">
</head>
<body ng-app="app">
    <div ng-controller="Controller1">
        <ul>
            <!-- 循环输出data里面的数据,用自定义的名为filterAge的过滤器过滤 -->
            <li ng-repeat="item in data | filterAge">
                `item`.`name` `item`.`age` `item`.`position`
            </li>
        </ul>
    </div>
    <script src="../JS/angular.min.js"></script>
    <script type="text/javascript">
    angular.module('app', [], function($provide) {
            //service提供数据
            $provide.service('data', function() {
                return [{
                    name: 'Wilshere',
                    age: 23,
                    position: 'midfield'
                }, {
                    name: 'Giroud',
                    age: 28,
                    position: 'striker'
                }, {
                    name: 'Cech',
                    age: 33,
                    position: 'goalkeeper'
                }];
            });
        })
        //用.filter的方法定义过滤器
        .filter('filterAge', function() {
            return function(obj) {
                //obj是过滤前的对象
                var newObj = [];
                angular.forEach(obj, function(i) {
                    if (i.age > 25) {
                        newObj.push(i);
                    }
                });
                return newObj;
            }
        })
        .controller('Controller1', function($scope, data) {
            $scope.data = data;
        });
    </script>
</body>
</html>


第二种的例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<!DOCTYPE html>
<html ng-app="app">
<head>
    <meta charset="utf-8">
</head>
<body ng-app="app">
    <div ng-controller="Controller1">
        <ul>
            <!-- 循环输出data里面的数据,用自定义的名为filterAge的过滤器过滤 -->
            <li ng-repeat="item in data | filterAge">
                `item`.`name` `item`.`age` `item`.`position`
            </li>
        </ul>
    </div>
    <script src="../JS/angular.min.js"></script>
    <script type="text/javascript">
    angular.module('app', [], function($filterProvider, $provide) {
            //用注册的方法自定义过滤器
            $filterProvider.register('filterAge', function() {
                return function(obj) {
                    var newObj = [];
                    angular.forEach(obj, function(i) {
                        //age大于25的才会输出
                        if (i.age > 25) {
                            newObj.push(i);
                        }
                    });
                    return newObj;
                }
            });
            //service提供数据
            $provide.service('data', function() {
                return [{
                    name: 'Wilshere',
                    age: 23,
                    position: 'midfield'
                }, {
                    name: 'Giroud',
                    age: 28,
                    position: 'striker'
                }, {
                    name: 'Cech',
                    age: 33,
                    position: 'goalkeeper'
                }];
            });
        })
        .controller('Controller1', function($scope, data) {
            $scope.data = data;
        });
    </script>
</body>
</html>


wKioL1WR-IaTKPPkAABBMJ900h0063.jpg










本文转自 iampomelo 51CTO博客,原文链接:http://blog.51cto.com/iampomelo/1668754,如需转载请自行联系原作者

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/454426.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机考试上传照片教程,电脑照片传到iPhone手机的详细步骤【图文】

苹果自带的iOS系统是不可以随便和电脑进行数据交换的&#xff0c;必须使用iTunes软件。许多用户为此问题困扰&#xff0c;我们有什么可以把电脑照片传到iPhone手机&#xff1f;下面我们就一起来看看把电脑照片传到iphone设备的详细步骤。具体方法如下&#xff1a;1&#xff0c;…

javaweb 导出文件名乱码的问题解决方案

fileName new String(fileName.getBytes("ISO8859-1"), "UTF-8"); 或者 String finalFileName null; if(StringUtils.contains(userAgent, "MSIE")){//IE浏览器 finalFileName URLEncoder.encode(fileName,"UTF8"); }else if(Str…

AVS 分像素运动估计优化算法

—249—AVS 分像素运动估计优化算法杨涵悦 1&#xff0c;张兆杨1&#xff0c;滕国伟2(1. 上海大学通信学院&#xff0c;上海 200072&#xff1b;2. 上海广电(集团)有限公司中央研究院&#xff0c;上海 200233)摘要&#xff1a;针对AVS 分像素运动估计的问题&#xff0c;提出一种…

计算机系统结构sw指令集,自考02325计算机系统结构复习资料六

自考生网为考生收集整理了“自考02325计算机系统结构复习资料六“以供考生们在考试前用复习资料巩固所学到的知识&#xff0c;得到更好地复习效果。注&#xff1a;由于各省教材每年都有更新、变动&#xff0c;自考复习资料并不一定出于同一自考教材版本&#xff0c;但考生们仍可…

Django REST framework 源码中提供的默认配置

DEFAULTS 是默认配置&#xff0c;IMPORT_STRINGS 是要相对应导入的类 键 大写大写大写 ########################### settings.py ########################## DEFAULTS {# Base API policiesDEFAULT_RENDERER_CLASSES: (rest_framework.renderers.JSONRenderer,rest_framew…

python 去掉空格_如何从Python DataFrame中去除空格在这个例子中

使用applymap到数据帧&#xff0c;applymap施加一拉每个单元格上的mbda函数。在lambda函数中拆分字符串&#xff08;白色空格在其中被忽略&#xff09;然后加入它。如果有一个int&#xff0c;那么你可以在lambda函数中使用if else。 from pandas import Series, DataFrame impo…

Mware HA实战攻略之五VMwareHA测试验收

【IT168 专稿】在上一篇"VMware HA实战攻略之四VMwareHA安装及配置"中&#xff08;点击&#xff09;&#xff0c;讲述了VMwareHA的概念及创建过程&#xff0c;还讲述了创建过程中要注意的一些事项。在本篇中&#xff0c;将要讲述如何在群集节点之一的ESX主机上安装虚…

AVS解码器在DSP平台上的优化

AVS( Audio Video Coding STandard)是由我国数字 音视频标准工作组制定的具有自主知识产权的第二代音视频压缩准。AVS实行1 元专利费用的原则&#xff0c;相比其它音视频编解码标准具有编码效率高、专利费用低、授权模式简单等优势。AVS 解码器的结构复杂、运算量较大&#xff…

如何重做计算机系统软件,电脑卡如何一键重做Win7旗舰版

电脑卡如何一键重做Win7旗舰版&#xff1f;小伙伴们在使用电脑的过程中系统会越来越卡&#xff0c;对于新手小白来说怎么重装系统是一个比较烦恼的问题&#xff0c;不知道如何下手&#xff0c;从哪里开始&#xff0c;那么接下来就以云骑士装机大师为例给小伙伴们讲解一下电脑卡…

Django Rest framework Request

[Django Rest framework文档翻译]-Request REST framework的Request类扩展自标准的HttpRequest&#xff0c;增加了REST framework灵活的请求解析和请求验证支持。 请求解析 REST framework的Request对象提供了灵活的请求解析&#xff0c;让你可以像一般处理普通form数据一样…

python去停用词用nltk_【NLTK】安装和使用NLTK分词和去停词

黄聪&#xff1a;PythonNLTK自然语言处理学习&#xff08;一&#xff09;&#xff1a;环境搭建 http://www.cnblogs.com/huangcong/archive/2011/08/29/2157437.html 安装NLTK可能出现的问题&#xff1a; 1. pip install ntlk 2. 如果遇到缺少stopwords报错如下&#xff1a;&am…

JavaScript知识概要

JavaScript 1.简介 JavaScript简介&#xff1a; JS是运行在浏览器端的一门脚本语言&#xff0c;一开始主要用来做浏览器验证&#xff0c;但现在功能已经不止于此。 所谓脚本语言就是指&#xff0c;代码不需要编译&#xff0c;直接运行&#xff0c;并且读入…

计算机文档xsl,XSL-FO 文档

XSL-FO 文档XSL-FO 文档XSL-FO 文档是带有输出信息的 XML 文件。XSL-FO 文档存储在以 .fo 或 .fob 为文件扩展名的文件中。您也可以把 XSL-FO 文档存储为以 .xml 为扩展名的文件&#xff0c;这样做的话可以使 XSL-FO 文档更易被 XML 编辑器存取。XSL-FO 文档结构XSL-FO 的文档结…

vue项目cordova打包的android应用

准备工作nodejs、cordova、AndroidStudio这些在上一篇文章中已经说过了&#xff0c;这里就不重复说明。以此文记录vue项目用cordova打包移动app的方法。 1.创建一个cordova项目&#xff0c;如创建一个名为testapp的工程&#xff1a;cordova create testapp 2.添加安卓平台 cord…

H.264视频开发---代码移植

基于DSP系统开发的视频编解码系统&#xff0c;国内几乎都是走的移植&#xff0c;优化的路线&#xff0c;并且移植的代码&#xff0c;都是开源的。毕竟花费大量的人力&#xff0c;物力去开发一套自己的代码&#xff0c;并不见得比一些成熟的开源代码效率更高&#xff0c;健壮性更…

Django REST framework 源码解析

先放图&#xff0c;放图说话&#xff0c;可能有点长 主流程 这个颜色 从setting导入默认数据流程是 这个颜色 主流程大概流程写一下&#xff1a;as_view 实际返回view&#xff0c;并把参数{"get":"list","post":"create"}传递给view…

-9 逆序输出一个整数的各位数字_leetcode两数相加(大整数相加)

题目来源于leetcode第二题两数相加。题目描述给出两个非空的链表用来表示两个非负的整数。其中&#xff0c;它们各自的位数是按照逆序的方式存储的&#xff0c;并且它们的每个节点只能存储一位数字。如果&#xff0c;我们将这两个数相加起来&#xff0c;则会返回一个新的链表来…

计算机如何添加管理员权限,电脑使用代码如何添加管理员权限

我们在使用电脑运行某些软件的时候&#xff0c;可能需要用到管理员权限才能运行&#xff0c;通常来说直接点击右键就会有管理员权限&#xff0c;但最近有用户向小编反馈&#xff0c;在需要管理员权限的软件上点击右键没有看到管理员取得所有权&#xff0c;那么究竟该如何才能获…

mysql选择数据库创建数据库

MySQL 选择数据库 在你连接到 MySQL 数据库后&#xff0c;可能有多个可以操作的数据库&#xff0c;所以你需要选择你要操作的数据库。 从命令提示窗口中选择MySQL数据库 在 mysql> 提示窗口中可以很简单的选择特定的数据库。你可以使用SQL命令来选择指定的数据库。 实例 以下…

英语面试技巧以及准备工作

如果你提前知道了电话面试的时间&#xff0c;则可以在面试时把简历、coverletter放在你旁边的桌子上&#xff0c;直接运用里面的句子回答问题。一些基本的问题&#xff0c;你可以事先准备好答案。通常&#xff0c;在电话英语面试的时候会提道&#xff1a;  please tell me som…