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.pswp.cn/news/454426.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/454426.shtml
英文地址,請注明出處:http://en.pswp.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…