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;…

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;那么接下来就以云骑士装机大师为例给小伙伴们讲解一下电脑卡…

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;并且读入…

vue项目cordova打包的android应用

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

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;那么究竟该如何才能获…

sql注入问题

${}拼接sql&#xff0c;会引起sql注入&#xff0c;sql注入例如&#xff1a; select * from user where name like ‘%’ or 11 or ‘%’&#xff1b; 这种情况下&#xff0c;论name为什么都可以执行 转载于:https://www.cnblogs.com/mengyinianhua/p/7649325.html

teechart绘制实时曲线_快速学会CAD绘制传输线路图纸

一工具CAD工程设计软件二方法和步骤万事开头难&#xff0c;遇到不懂的知识刚开始都有畏难的情绪&#xff0c;只要有决心学习&#xff0c;诚心想学会一项技能&#xff0c;那学会学好它就只是时间问题了。我们常常面临时间紧、需要快速入门甚至熟练地解决工作中实际情况的问题&am…

使用ajax获取用户所在地的天气

1.要获取用户归属地的天气&#xff0c;首先得获取用户所在的市区&#xff0c; 这里先获取用户的IP&#xff0c;通过IP获取IP的归属地&#xff0c;从而得到用户 地址。 获取客户端ip: js: <scripttype"text/javascript" src"http://pv.sohu.com/cityjson?ieu…

Python 之协程

之前我们学习了线程、进程的概念&#xff0c;了解了在操作系统中进程是资源分配的最小单位,线程是CPU调度的最小单位。按道理来说我们已经算是把cpu的利用率提高很多了。但是我们知道无论是创建多进程还是创建多线程来解决问题&#xff0c;都要消耗一定的时间来创建进程、创建线…

ip变换器苹果系统_加密锁能为高铁做什么?铁路电力变换器系统告诉您

代表国之重器的高铁&#xff0c;是怎样保护他们在软件上投资的专有技术不被仿冒、逆向工程和篡改呢&#xff1f;与一般的软件保护加密不同&#xff0c;高铁运行中的实时控制器对物理环境有着严苛的要求&#xff0c;如铁路电力变换器系统&#xff0c;须满足典型工业应用的扩展温…

zxing .net 多种条码格式的生成

下载地址&#xff1a;http://zxingnet.codeplex.com/ zxing.net是.net平台下编解条形码和二维码的工具&#xff0c;使用非常方便。 本文主要说明一下多种类型条码的生成。 适用的场景&#xff0c;标签可视化设计时&#xff0c;自定义条码类型&#xff0c;预览。 遍历zxing支持的…

k8s dashboard_windows10 部署 docker+k8s 集群

下面是经过踩坑之后的 windows10 单机部署 docker k8s 步骤&#xff0c;其中有几处比较关键的地方需要注意&#xff0c;后面加粗标注&#xff0c;下面就开始吧&#xff01;0、下载cmder在 windows 上有一个趁手的命令行工具非常有必要&#xff0c;推荐 Cmder&#xff0c;下面是…

Python 之网络编程基础

套接字&#xff08;socket&#xff09;初使用 基于TCP协议的socket tcp是基于链接的&#xff0c;必须先启动服务端&#xff0c;然后再启动客户端去链接服务端 server端 import socket sk socket.socket() sk.bind((127.0.0.1,8898)) # 把地址绑定到套接字 sk.listen() …

面试之网络编程和并发

1、简述 OSI 七层协议。 物理层&#xff1a;主要基于电器特性发送高低电压(1、0)&#xff0c;设备有集线器、中继器、双绞线等&#xff0c;单位&#xff1a;bit 数据链路层&#xff1a;定义了电信号的分组方式&#xff0c;设备&#xff1a;交换机、网卡、网桥&#xff0c;单位&…

redis 远程主机强迫关闭了一个现有的连接_记一次Redis+Getshell经验分享

你是我患得患失的梦&#xff0c;我是你可有可无的人&#xff0c;毕竟这穿越山河的箭&#xff0c;刺的都是用情之疾的人。前言&#xff1a;当我们接到一个授权渗透测试的时候&#xff0c;常规漏洞如注入、文件上传等尝试无果后&#xff0c;扫描端口可能会发现意外收获。知己知彼…