AngularJS 過濾器(內建和自建)詳解_AngularJS

來源:互聯網
上載者:User

過濾器用來格式化需要展示給使用者的資料。AngularJS有很多實用的內建過濾器,同時也提
供了方便的途徑可以自己建立過濾器。

在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過濾器允許我們自己設定貨幣符號。預設情況下會採用用戶端所處地區的貨幣符號,
但是也可以自訂貨幣符號。

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 -->
四位時區標識:{{ 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)函數

   對每個元素都執行這個函數,返回非假值的元素會出現在新的數組中並返回。

  自訂函數進行過濾(在這個例子中函數定義在$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過濾器將數字格式化成文本。它的第二個參數是可選的,用來控制小數點後截取的位元。(如果傳入了一個非數字字元,會返會Null 字元串。)

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過濾器可以將字串轉換為大寫形式:

 二:自訂過濾器

 建立自訂過濾器需要將它放到自己的模組中。

下面舉例說明:

 將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 過濾器 的資料整理,後續繼續補充相關資料,謝謝大家對本站的支援!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.