AngularJS 過濾器(自帶和自建)詳解
過濾器用來格式化需要展示給用戶的數據。AngularJS有很多實用的內置過濾器,同時也提
供了方便的途徑可以自己創(chuàng)建過濾器。
在HTML中的模板綁定符號{{ }}內通過|符號來調用過濾器。例如:{{value|lowercase}}//將值轉換成小寫
在JavaScript代碼中可以通過$filter來調用過濾器
例:
app.controller(‘DemoController‘, [‘$scope‘, ‘$filter‘,
function($scope, $filter) {
$scope.name = $filter(‘lowercase‘)(‘Ruby‘);
}]);
以HTML的形式使用過濾器時,如果需要傳遞參數給過濾器,只要在過濾器名字后面加冒號
即可。如果有多個參數,可以在每個參數后面都加入冒號。
例如
{{0.23145|number:3}}
顯示值:0.231//數值過濾器 可以限制小數點后的位數(在過濾器后寫上2,將2作為參數傳遞給過濾器)
可以用|符號作為分割符來同時使用多個過濾器
一:下面介紹AngularJS提供的內置過濾器:
1.currecy過濾器可以將一個數值格式化為貨幣格式。用{{ 50| currency }}來將50轉化成貨幣格式。
currecy過濾器允許我們自己設置貨幣符號。默認情況下會采用客戶端所處區(qū)域的貨幣符號,
但是也可以自定義貨幣符號。
2.date過濾器可以將日期格式化成需要的格式。AngularJS中內置了幾種日期格式,如果沒有
指定使用任何格式,默認會采用mediumDate格式
下面是內置的支持本地化的日期格式:
{{ today | date:‘medium‘ }} <!-- Aug 09, 2013 12:09:02 PM -->
{{ today | date:‘short‘ }} <!-- 8/9/1312:09PM -->
{{ today | date:‘fullDate‘ }} <!-- Thursday, August 09, 2013 -->
{{ today | date:‘longDate‘ }} <!-- August 09, 2013 -->
{{ today | date:‘mediumDate‘ }}<!-- Aug 09, 2013 -->
{{ today | date:‘shortDate‘ }} <!-- 8/9/13 -->
{{ today | date:‘mediumTime‘ }}<!-- 12:09:02 PM -->
{{ today | date:‘shortTime‘ }} <!-- 12:09 PM -->
年份格式化
四位年份:{{ today | date:‘yyyy‘ }} <!-- 2013 -->
兩位年份:{{ today | date:‘yy‘ }} <!-- 13 -->
一位年份:{{ today | date:‘y‘ }} <!-- 2013 -->
月份格式化
英文月份:{{ today | date:‘MMMM‘ }} <!-- August -->
英文月份簡寫:{{ today | date:‘MMM‘ }} <!-- Aug -->
數字月份:{{ today |date:‘MM‘ }} <!-- 08 -->
一年中的第幾個月份:{{ today |date:‘M‘ }} <!-- 8 -->
日期格式化
數字日期:{{ today|date:‘dd‘ }} <!-- 09 -->
一個月中的第幾天:{{ today | date:‘d‘ }} <!-- 9 -->
英文星期:{{ today | date:‘EEEE‘ }} <!-- Thursday -->
英文星期簡寫:{{ today | date:‘EEE‘ }} <!-- Thu -->
小時格式化
24小時制數字小時:{{today|date:‘HH‘}} <!--00-->
一天中的第幾個小時:{{today|date:‘H‘}} <!--0-->
12小時制數字小時:{{today|date:‘hh‘}} <!--12-->
上午或下午的第幾個小時:{{today|date:‘h‘}} <!--12-->
分鐘格式化
數字分鐘數:{{ today | date:‘mm‘ }} <!-- 09 -->
一個小時中的第幾分鐘:{{ today | date:‘m‘ }} <!-- 9 -->
秒數格式化
數字秒數:{{ today | date:‘ss‘ }} <!-- 02 -->
一分鐘內的第幾秒:{{ today | date:‘s‘ }} <!-- 2 -->
毫秒數:{{ today | date:‘.sss‘ }} <!-- .995 -->
字符格式化
上下午標識:{{ today | date:‘a‘ }} <!-- AM -->
四位時區(qū)標識:{{ today | date:‘Z‘ }} <!--- 0700 -->
自定義日期格式示例:
{{ today | date:‘MMMd, y‘ }} <!-- Aug9, 2013 -->
{{ today | date:‘EEEE, d, M‘ }} <!-- Thursday, 9, 8-->
{{ today | date:‘hh:mm:ss.sss‘ }} <!-- 12:09:02.995 -->
3.filter
filter過濾器可以從給定數組中選擇一個子集,并將其生成一個新數組返回。這個過濾器通常用來過濾需要進行展示的元素。
這個過濾器的第一個參數可以是字符串、對象或是一個用來從數組中選擇元素的函數。
1)傳入的參數是字符串時
返回所有包含這個字符串的元素。如果我們想返回不包含該字符串的元素,在參數前加!符號。
例:
{{ [‘Bri‘,‘Lerner‘,‘Likes‘,‘To‘,‘Eat‘,‘Pizza‘] | filter:‘e‘ }}
<!-- ["Lerner","Likes","Eat"] -->
2)傳入的參數是對象
AngularJS會將待過濾對象的屬性同這個對象中的同名屬性進行比較,如果屬性值是字符串就會判斷是否包含該字符串。如果我們希望對全部屬性都進行對比,可以將$當作鍵名。
例:
{{ [{
‘name‘: ‘Ari‘,
‘City‘: ‘San Francisco‘,
‘favorite food‘: ‘Pizza‘
},{
‘name‘: ‘Nate‘,
‘City‘: ‘San Francisco‘,
‘favorite food‘: ‘indian food‘
}] | filter:{‘favorite food‘: ‘Pizza‘} }}
<!-- [{"name":"Ari","City":"SanFrancisco","favoritefood":"Pizza"}] -->
3)函數
對每個元素都執(zhí)行這個函數,返回非假值的元素會出現在新的數組中并返回。
自定義函數進行過濾(在這個例子中函數定義在$scope上):
{{ [‘Ari‘,‘likes‘,‘to‘,‘travel‘] | filter:isCapitalized }}
<!-- ["Ari"] -->
isCapitalized函數的功能是根據首字母是否為大寫返回true或false,具體如下所示:
$scope.isCapitalized = function(str) {
return str[0] == str[0].toUpperCase();
};
4.json
json過濾器可以將一個JSON或JavaScript對象轉換成字符串。這種轉換對調試非常有幫助:
{{ {‘name‘: ‘Ari‘, ‘City‘: ‘SanFrancisco‘} | json }}
<!--
{
"name": "Ari",
"City": "San Francisco"
}
-->
5.limitTo
limitTo過濾器會根據傳入的參數生成一個新的數組或字符串,新的數組或字符串的長度取決于傳入的參數,通過傳入參數的正負值來控制從前面還是從后面開始截取。(如果傳入的長度值大于被操作數組或字符串的長度,那么整個數組或字符串都會被返回。)
例子:
{{ San Francisco is very cloudy | limitTo:3 }}
<!-- San -->
{{ San Francisco is very cloudy | limitTo:-6 }}
<!-- cloudy -->
對數組也可以進行同樣的操作。返回數組的第一個元素:
{{ [‘a‘,‘b‘,‘c‘,‘d‘,‘e‘,‘f‘] | limitTo:1 }}
<!-- ["a"] -->
6 lowercase
lowercase過濾器將字符串轉為小寫。
7.number
number過濾器將數字格式化成文本。它的第二個參數是可選的,用來控制小數點后截取的位數。(如果傳入了一個非數字字符,會返會空字符串。)
8.orderBy
orderBy過濾器可以用表達式對指定的數組進行排序。
orderBy可以接受兩個參數,第一個是必需的,第二個是可選的。
第一個參數是用來確定數組排序方向的謂詞。
下面分情況討論第一個參數的類型。
函數
當第一個參數是函數時,該函數會被當作待排序對象的getter方法。
字符串
對這個字符串進行解析的結果將決定數組元素的排序方向。我們可以傳入+或-來強制進行升序或降序排列。
數組
在排序表達式中使用數組元素作為謂詞。對于與表達式結果并不嚴格相等的每個元素,則使用第一個謂詞。
第二個參數用來控制排序的方向(是否逆向)。
例:
{{ [{
‘name‘: ‘Ari‘,
‘status‘: ‘awake‘
},{
‘name‘: ‘Q‘,
‘status‘: ‘sleeping‘
},{
‘name‘: ‘Nate‘,
‘status‘: ‘awake‘
}] | orderBy:‘name‘ }}
<!--
[
{"name":"Ari","status":"awake"},
{"name":"Nate","status":"awake"},
{"name":"Q","status":"sleeping"}
]
-->
對排序結果進行反轉(通過將第二個參數設置為true可以將排序結果進行反轉:orderBy:‘name‘:true)
9.uppercase
uppercase過濾器可以將字符串轉換為大寫形式:
二:自定義過濾器
創(chuàng)建自定義過濾器需要將它放到自己的模塊中。
下面舉例說明:
將name以首字母大寫形式顯示
<!DOCTYPE html>
<html>
<head>
<title>Custom Filter</title>
<meta charset="utf-8" />
<script type="text/javascript" src="angular.min.js"></script>
</head>
<body ng-app="customFilter" ng-controller="filterController">
<h1>{{name|lowercase|Capitalize}}</h1>
<script type="text/javascript" src="customfilter.js"></script>
</body>
</html>
customfilter.js
(function () {
var app = angular.module(‘customFilter‘, []);
app.controller(‘filterController‘, function ($scope) {
$scope.name = ‘JACK‘;
});
app.filter(‘Capitalize‘, function () {
return function (input) {
if (input) {
return input[0].toUpperCase() + input.slice(1);
}
};
});
})();
以上就是對AngularJS 過濾器 的資料整理,后續(xù)繼續(xù)補充相關資料,謝謝大家對本站的支持!
- 詳解AngularJS中的filter過濾器用法
- AngularJS的內置過濾器詳解
- 詳解AngularJS中自定義過濾器
- AngularJS中的過濾器使用詳解
- 使用AngularJS創(chuàng)建自定義的過濾器的方法
- AngularJS過濾器filter用法總結
- 詳解AngularJS中$filter過濾器使用(自定義過濾器)
- AngularJS實現用戶登錄狀態(tài)判斷的方法(Model添加攔截過濾器,路由增加限制)
- Angularjs 雙向綁定時字符串的轉換成數字類型的問題
- Angular.js 實現數字轉換漢字實例代碼
- Angular使用過濾器uppercase/lowercase實現字母大小寫轉換功能示例
相關文章
使用AngularJS和PHP的Laravel實現單頁評論的方法
這篇文章主要介紹了使用AngularJS和PHP的Laravel實現單頁評論的方法,本文的示例是前端JavaScript和后端PHP聯合編程的典范,需要的朋友可以參考下2015-06-06
使用AngularJS創(chuàng)建單頁應用的編程指引
這篇文章主要介紹了使用AngularJS創(chuàng)建單頁應用的編程指引,AngularJS是一款高人氣的JavaScript庫,需要的朋友可以參考下2015-06-06
Angular 4依賴注入學習教程之FactoryProvider配置依賴對象(五)
這篇文章主要給大家介紹了關于Angular 4依賴注入之FactoryProvider配置依賴對象的相關資料,文中介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。2017-06-06

