過濾器filter

angular中filter過濾器主要有兩個(gè)作用:格式化數(shù)據(jù)過濾數(shù)據(jù)。filter組件共有以下幾種:1、currency 2、number 3、date 4、json 5、lowercase 6、uppercase 7、limitTo 8、orderBy 9、filter。
官方API:https://code.angularjs.org/1.4.0-rc.2/docs/api/ng/filter

一 、currency

{{ currency_expression | currency : symbol : fractionSize}} 
 currency的作用是將值轉(zhuǎn)換為精確小數(shù)點(diǎn)的數(shù)字,同時(shí)在前面添加貨幣符號(hào),如果值不能轉(zhuǎn)化為數(shù)字,會(huì)返回空字符
 symbol:貨幣符號(hào),  
 fractionSize:精確小數(shù)位數(shù)
  $scope.money = 126893.5564;

currency測試

圖中我們可以看到currency默認(rèn)添加$符號(hào),精確2位小數(shù),會(huì)給數(shù)字添加逗號(hào)

二、number

currency已經(jīng)包含了number的功能了,同樣如果值不能轉(zhuǎn)換為數(shù)字,返回空,如果是無窮大返回“∞”
  {{ number_expression | number : fractionSize}}
  fractionSize:小數(shù)點(diǎn)位數(shù)

number測試

我們可以看到,number默認(rèn)精確了3位小數(shù)
currency和number精確小數(shù)時(shí)都會(huì)發(fā)生四舍五入

三、date

關(guān)于date的格式化一看官方API簡直嚇?biāo)廊?,真是太多了,我們就來關(guān)注一下我們會(huì)用到的,想了解更多的自己可以去看看文檔。

  1. yyyy:表示年份,如2016
  2. MM:表示月份,如06
  3. M:同樣表示月份,如6,和MM的區(qū)別是個(gè)位數(shù)月份時(shí)前面沒有0,其他類似
  4. dd/d:表示天,如今天是06
  5. HH/H:表示小時(shí),24小時(shí)制
  6. hh/h:同樣表示小時(shí),12小時(shí)制
  7. mm/m:分鐘
  8. ss/s:秒
  9. sss:毫秒
  10. a :表示AM/PM,沒有它的話12小時(shí)制時(shí)我們怎么知道上午還是下午啊,當(dāng)然24小時(shí)制時(shí)仍然可以用它
    $scope.today = new Date();
date

我們可以看到年、月、日、時(shí)間的順序是可以自行調(diào)的,連接符也是。之前犯二不解為什么有的是大寫字母有的是小寫字母,那是因?yàn)槟J(rèn)是小寫的,但是月份M和分鐘m沖突,所以才有大小寫混合了。。

四、uppercase、lowercase

這兩個(gè)確實(shí)沒什么好說的
$scope.str = 'Hello AngularJs';

大小寫轉(zhuǎn)換

五、limitTo

{{ limitTo_expression | limitTo : limit : begin}}
limit:截取長度
begin:開始位置
limitTo的作用類似于string的substr函數(shù),只不過參數(shù)顛倒了,注意是substr不是substring,
limitTo不僅可以用于字符串,也可以用于數(shù)組,此處僅以字符串舉例

limitTo
六、orderBy

{{ orderBy_expression | orderBy : expression : reverse}}
orderBy的作用是按照某一規(guī)則給數(shù)組進(jìn)行排序,可以是普通數(shù)組,也可以是對象數(shù)組
$scope.items = [{id: 1001, name: '趙云', country: '蜀'}, {id: 1003, name: '關(guān)羽', country: '蜀'}, {id: 1002,name: '馬超',country: '蜀'}];

orderBy按照對象id排序

從例子2中我們可以看到,orderBy默認(rèn)按照對象id進(jìn)行了升序排序,例子3“-id”即按照id進(jìn)行了降序排序,而例子4可以看出reverse為true的作用是反轉(zhuǎn)排序結(jié)果,JavaScript中也有reverse函數(shù)。
普通數(shù)組也是可以的{{[22,34,12,3,56]|orderBy:'':true}}

普通數(shù)組排序
七、filter

終于到最后一個(gè)了,寫完就可以回家吃飯了。
看名字就知道filter是過濾作用啦~~還是直接舉例子吧

filter過濾

我們看到:

  1. 例子1中直接filter:"00"匹配到了所有數(shù)據(jù),那是因?yàn)閒ilter進(jìn)行的是模糊匹配,只要有一個(gè)屬性值含有”00“就會(huì)匹配到
  2. 例子2中用filter:{id:'1001'},不出我們所料這次只匹配到了id為1001的數(shù)據(jù),其實(shí)這里仍然是模糊匹配,如果我們把“1001”改成“001”你試試是不是仍會(huì)匹配到
  3. 忘記告訴item是啥了
    $scope.item={}; $scope.item.id='001';
    我們用了item.id和item.$進(jìn)行了匹配,這其實(shí)是一種更加靈活的方式,下一節(jié)中我們會(huì)用到。
八、In JavaScript

我們上面講的一些都是在html中使用過濾器,其實(shí)在JavaScript中也可以。
myApp.controller('filterCtr', ['$scope', '$filter', function ($scope, $filter) {}
我們要先注入$filter,然后我們再講一個(gè)新的過濾器-json
官方說json過濾器的作用就是為了調(diào)試用的,也是,要不然誰沒事把一個(gè)json字符串輸出到頁面干嘛。
我們來看一下它的效果:

json過濾器

是不是看起來方便多了。
類似的其他過濾器也能在函數(shù)里面用:
$scope.test = $filter('currency')(142, 'CNY', 5);
其他類似,可以看看文檔,試一下。
而且filter過濾器還能自定義過濾函數(shù),功能會(huì)更加強(qiáng)大,類似于ECMAScript5中的filter函數(shù),快去看看。

總結(jié)

肚子好餓,我要吃飯去了
  github代碼地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載文章 angularjs 過濾器(filter)正如其名,作用就是接收一個(gè)輸入,通過某個(gè)規(guī)則進(jìn)行處理,然后返回...
    飛將軍閱讀 679評論 0 2
  • 就是通過一定的規(guī)則對數(shù)據(jù)進(jìn)行處理,然后返回處理后的結(jié)果。 一、內(nèi)置過濾器(9種) currency(貨幣)將數(shù)字格...
    Lusia_閱讀 429評論 0 0
  • 過濾器$filter json格式化為json格式。如果是{{json expression | json: 5}...
    iqing2012閱讀 684評論 0 0
  • AngularJS是什么?AngularJs(后面就簡稱ng了)是一個(gè)用于設(shè)計(jì)動(dòng)態(tài)web應(yīng)用的結(jié)構(gòu)框架。首先,它是...
    200813閱讀 1,783評論 0 3
  • 為什么總覺得別人生活得很好而自己卻很苦逼?自己明明很努力卻還是對自己失望……! 從你的話中,我讀到了你的“不該心”...
    小賢哥2017閱讀 1,312評論 2 5

友情鏈接更多精彩內(nèi)容