摘要:過濾器過濾器正如其名,作用就是接收一個輸入,通過某個規(guī)則進行處理,然后返回處理后的結(jié)果。表單的控制功能主要涉及到數(shù)據(jù)驗證以及表單控件的增強。格式化數(shù)字過濾器可以為一個數(shù)字加上千位分割,像這樣,。
過濾器 Filter
過濾器(filter)正如其名,作用就是接收一個輸入,通過某個規(guī)則進行處理,然后返回處理后的結(jié)果。主要用在數(shù)據(jù)的格式化上。
過濾器通常是伴隨標記來使用的,將你model中的數(shù)據(jù)格式化為需要的格式。
表單的控制功能主要涉及到數(shù)據(jù)驗證以及表單控件的增強。關(guān)于表單控件會多帶帶模塊做講解。
內(nèi)置過濾器先說angular自帶的幾種過濾器
1.currency (貨幣處理)
使用currency可以將數(shù)字格式化為貨幣,默認是美元符號,你可以自己傳入所需的符號,例如我傳入人民幣:
{{num | currency : "¥"}}
2.date (日期格式化)
原生的js對日期的格式化能力有限,angular提供的date過濾器基本可以滿足一般的格式化要求。用法如下:
{{date | date : "yyyy-MM-dd hh:mm:ss EEEE"}} date格式可設(shè)定
參數(shù)用來指定所要的格式, y年 M月 d日 h時 m分 s秒 E星期,你可以自由組合它們。也可以使用不同的個數(shù)來限制格式化的位數(shù)。
3.filter(匹配字符串)
這個filter用來處理一個數(shù)組,然后可以過濾出含有某個字符串的元素,作為一個子數(shù)組來返回。可以是字符串數(shù)組,也可以是對象數(shù)組。如果是對象數(shù)組,可以匹配屬性的值。它接收一個參數(shù),用來定義過濾元素的匹配規(guī)則。
例子如下:
$scope.demandArray = [ {name:"lmc",age:23}, {name:"lzx",age:24}, {name:"lxy",age:24}, {name:"lyj",age:26}, {name:"fll",age:25} ]; $scope.func = function(e){return e.age>24;}; {{ demandArray | filter : "a" }} //匹配屬性值中含有a的 {{ demandArray | filter : 4 }} //匹配屬性值中含有4的 {{ demandArray | filter : {name : "i"} }} //參數(shù)是對象,匹配name屬性中含有i的 {{ demandArray | filter : func }} //參數(shù)是函數(shù),指定返回age>4的
4.json(格式化json對象)
json過濾器可以把一個js對象格式化為json字符串,沒有參數(shù)。這東西有什么用呢,我一般也不會在頁面上輸出一個json串啊,官網(wǎng)說它 可以用來進行調(diào)試,或者,也可以用在js中使用,作用就和我們熟悉的JSON.stringify()一樣。用法超級簡單:
{{ jsonTest | json}}
5.limitTo(限制數(shù)組長度或字符串長度)
limitTo過濾器用來截取數(shù)組或字符串,接收一個參數(shù)用來指定截取的長度,如果參數(shù)是負值,則從數(shù)組尾部開始截取。注意這個filter只能從數(shù)組或字符串的開頭/尾部進行截取。
用處不是很大。。完全可以用js來完成。
{{ childrenArray | limitTo : 2 }} //將會顯示數(shù)組中的前兩項
6.lowercase(小寫)
把數(shù)據(jù)轉(zhuǎn)化為全部小寫。沒有參數(shù),只能把整個字符串變?yōu)樾懀荒苤付ㄗ帜浮?p>7.uppercase(大寫)
把數(shù)據(jù)轉(zhuǎn)化為全部大寫。沒有參數(shù),只能把整個字符串變?yōu)樾懀荒苤付ㄗ帜浮?/p>8.number(格式化數(shù)字)
number過濾器可以為一個數(shù)字加上千位分割,像這樣,123,456,789。同時接收一個參數(shù),可以指定float類型保留幾位小數(shù):
{{ num | number : 2 }}
9.orderBy(排序)
orderBy過濾器可以將一個數(shù)組中的元素進行排序,接收一個參數(shù)來指定排序規(guī)則,參數(shù)可以是一個字符串,表示以該屬性名稱進行排序。可以是 一個函數(shù),定義排序?qū)傩浴_€可以是一個數(shù)組,表示依次按數(shù)組中的屬性值進行排序(若按第一項比較的值相等,再按第二項比較),還是拿上面的孩子數(shù)組舉例:
自定義過濾器{{ demandArray | orderBy : "age" }}//按age屬性值進行排序,若是-age,則倒序{{ demandArray | orderBy : orderFunc }}//按照函數(shù)的返回值進行排序{{ demandArray | orderBy : ["age","name"] }}//如果age相同,按照name進行排序
filter的自定義方式也很簡單,使用module的filter方法,返回一個函數(shù),該函數(shù)接收
輸入值,并返回處理后的結(jié)果。
下面看一個給數(shù)字加百分比的一個自定義filter:
angular.module("MetronicApp").filter("numberToRMB",["$filter",function($filter) { return function (value) { var filter = $filter("currency"); return filter(value,"¥"); } }])
格式就是這樣,你的處理邏輯就寫在內(nèi)部的那個閉包函數(shù)中。你也可以讓自己的過濾器接收參數(shù),參數(shù)就定義在return的那個函數(shù)中,作為第二個參數(shù),或者更多個參數(shù)也可以。
更多自定義filter會在項目中詳細講解。
使用方法1.在模板中使用filter
我們可以直接在{{}}中使用filter,跟在表達式后面用 | 分割,語法如下:
{{ expression | filter }}
也可以多個filter連用,上一個filter的輸出將作為下一個filter的輸入:
{{ expression | filter1 | filter2 | ... }}
filter可以接收參數(shù),參數(shù)用 : 進行分割,如下:
{{ expression | filter:argument1:argument2:... }}
除了對
{{}}
中的數(shù)據(jù)進行格式化,我們還可以在指令中使用filter,例如先對數(shù)組array進行過濾處理,然后再循環(huán)輸出:
2.在controller和service中使用filter
我們的js代碼中也可以使用過濾器,方式就是我們熟悉的依賴注入,例如我要在controller中使用currency過濾器,只需將它注入到該controller中即可,代碼如下:
app.controller("testC",function($scope,currencyFilter){ $scope.num = currencyFilter(123534); }
在模板中使用{{num}}就可以直接輸出$123,534.00了。
在服務(wù)中使用filter也是同樣的道理。
如果你要在controller中使用多個filter,并不需要一個一個注入,angular提供了一個$filter服務(wù)可以來調(diào)用所需的filter,你只需注入一個$filter就夠了,使用方法如下:
app.controller("testC",function($scope,$filter){ $scope.num = $filter("currency")(123534); $scope.date = $filter("date")(new Date()); }
可以達到同樣的效果。好處是你可以方便使用不同的filter了。
項目中會對使用到的filter做詳細講解。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/92686.html
摘要:上一篇譯精通使用開發(fā)四下一篇譯精通使用開發(fā)六書名合作對象正如所見,提供了一種將對象組織為模塊的方式。模塊不僅可以注冊可以直接被框架所調(diào)用的對象控制器,過濾器等,還可以使用任何應(yīng)用開發(fā)者所定義的對象。 上一篇:【譯】《精通使用AngularJS開發(fā)Web App》(四) 下一篇:【譯】《精通使用AngularJS開發(fā)Web App》(六) 書名:Mastering Web Applic...
摘要:屬性為時,指示優(yōu)先級小于當前指令的指令都不執(zhí)行,僅執(zhí)行到本指令。 作者:心葉時間:2018-04-22 10:58 一:自定義指令常用模板 下面是大致的說明,不是全面的,后面來具體說明一些沒有提及的細節(jié)和重要的相關(guān)知識: angular.module(yelloxingApp, []).directive(uiDirective, function() { return { ...
流行框架 簡介 angularjs是一款非常優(yōu)秀的前端高級JS框架,由谷歌團隊開發(fā)維護,能夠快速構(gòu)建單頁web應(yīng)用,化繁為簡 無論是angularjs還是jQuery都是用原生JS封裝的 庫:對代碼進行封裝,調(diào)用封裝的方法,簡化操作 傳統(tǒng)方式是用get方式獲取元素,然后點方法 jQuery庫實現(xiàn)了對獲取方式的封裝,對方法的封裝 框架:提供代碼書寫規(guī)則,按照規(guī)則去寫代碼,框架會幫我們實現(xiàn)響應(yīng)的功能...
摘要:為指令賦值函數(shù)名,即可運行。它也是一個對象,指向應(yīng)用程序作用域內(nèi)的所有元素和執(zhí)行上下文。簡而言之,是與指令元素相關(guān)聯(lián)的當前作用域,可以理解為視圖和控制器間的一個通道。它們被組織為模塊形式,之后可以被另一個引用。 Angularjs Angular是一款主旋律的MVVM框架,框架和傳統(tǒng)的庫不同: 類庫是一些函數(shù)的集合,它能幫助你寫WEB應(yīng)用。起主導作用的是你的代碼,由你來決定何時使用類...
閱讀 1951·2021-09-07 09:59
閱讀 2520·2019-08-29 16:33
閱讀 3688·2019-08-29 16:18
閱讀 2849·2019-08-29 15:30
閱讀 1678·2019-08-29 13:52
閱讀 2035·2019-08-26 18:36
閱讀 530·2019-08-26 12:19
閱讀 694·2019-08-23 15:23