現(xiàn)在公司用ionic,就是基于angularjs封裝了一些api用于webapp,最近用的angularjs的filter確實(shí)省了很多代碼,現(xiàn)在總結(jié)一下!
成都創(chuàng)新互聯(lián)是專業(yè)的津南網(wǎng)站建設(shè)公司,津南接單;提供成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì),網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行津南網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!ng比較雞肋的過濾器,這里就一筆帶過吧!雞湯類常用的filter后面上例子。
{{ lastName | lowercase }}
{{ lastName | uppercase }}
number過濾器可以為一個(gè)數(shù)字加上千位分割,像這樣,123,456,789。同時(shí)接收一個(gè)參數(shù),可以指定小float型保留幾位小數(shù):
{{ num | number : 2 }}
{{num | currency : '¥'}}
{{ jsonTest | json}}
作用就和我們熟悉的JSON.stringify()一樣
{{ childrenArray | limitTo : 3 }} //將會顯示數(shù)組中的前3項(xiàng)
用來處理一個(gè)數(shù)組,然后可以過濾出含有某個(gè)子串的元素,作為一個(gè)子數(shù)組來返回??梢允亲址?dāng)?shù)組,也可以是對象數(shù)組。如果是對象數(shù)組,可以匹配屬性的值。它接收一個(gè)參數(shù),用來定義子串的匹配規(guī)則。
<ul> <li>filter 匹配子串(以下寫法只是方便觀察)</li> <li>{{ webArr | filter : 'n' }} <!--匹配屬性值中含有n的--></li> <li>{{ webArr | filter : 25 }} <!--匹配屬性值中含有25的--></li> <li>{{ webArr | filter : {name : 'l'} }} <!--//參數(shù)是對象,匹配name屬性中含有l(wèi)的--></li> <li>{{ webArr | filter : fun }} <!--/參數(shù)是函數(shù),指定返回age>25的--></li> </ul>
$scope.webArr = [ {name:'nick',age:25}, {name:'ljy',age:28}, {name:'xzl',age:28}, {name:'zyh',age:30} ]; $scope.fun = function(e){return e.age>25;};
filter 匹配子串(以下寫法只是方便觀察) [{"name":"nick","age":25}] [{"name":"nick","age":25}] [{"name":"ljy","age":28},{"name":"xzl","age":28}] [{"name":"ljy","age":28},{"name":"xzl","age":28},{"name":"zyh","age":30}]
日期過濾器應(yīng)該是常用過濾器中最簡單的吧!
yyyy--表示年份;
MM--月份(必須大寫);
dd--日期;
hh--時(shí);
mm--分(必須小寫);
ss--秒;
EEEE--星期;
hh:mm--形式是24小時(shí)制;
h:mma--12小時(shí)制;
其中年、月、日、時(shí)、分、秒 或 / : - 等自己試做搭配吧!
<ul> <li>8 日期1</li> <li ng-bind="date|date:'yyyy/MM/dd hh:mm:ss EEEE'"></li> <li>8 日期2</li> <li ng-bind="date|date:'yyyy年MM月dd日 h:mma EEEE'"></li> <li>8 日期3</li> <li ng-bind="date|date:'yyyy年MM月dd日 hh時(shí)mm分ss秒'"></li> <li>8 日期4</li> <li ng-bind="date|date:'yyyy/MM/dd hh:mm:ss'"></li> </ul>
日期1的顯示效果:
2016/11/19 11:59:05 Saturday
日期2的顯示效果:
2016年11月19日 12:01PM Saturday
日期3的顯示效果:
2016年11月22日 10時(shí)42分09秒
日期4的顯示效果:
2016/11/22 11:16:58
ng-repeat生成一個(gè)獨(dú)立的scope作用域,直接在ng-repeat循環(huán)后加管道orderBy排序。
用法很簡單,但有坑需注意兩點(diǎn):
參數(shù)引號勿忘;
參數(shù)形式--直接寫成age,不用寫成item2.age。
<ul> <li>3 按年齡排序(默認(rèn)升序)</li> <li ng-repeat="item2 in items2|orderBy:'age'"> <div> <b>name</b> <u ng-bind="item2.name"></u> </div> <div> <b>age</b> <i ng-bind="item2.age"></i> </div> <div> <b>stature</b> <i ng-bind="item2.stature"></i> </div> </li> </ul>
效果展示:
3 按年齡排序(默認(rèn)升序) name ljy age 27 stature 165 name nick age 25 stature 170 name xzl age 27 stature 175 name zyh age 29 stature 165
<ul> <li ng-repeat="item2 in items2|orderBy:'age':true"> <div> <b>name</b> <u ng-bind="item2.name"></u> </div> <div> <b>age</b> <i ng-bind="item2.age"></i> </div> <div> <b>stature</b> <i ng-bind="item2.stature"></i> </div> </li> </ul>
效果展示:
4 按年齡排序(加參數(shù)true則為倒序即降序) name zyh age 29 stature 165 name xzl age 27 stature 175 name ljy age 27 stature 165 name nick age 25 stature 170
5 想先按年齡升序在按身高降序(全是降序了,達(dá)不到效果,見第7例) 我曾就天真的這樣寫過^*^
<ul> <!--<li ng-repeat="item2 in items2|orderBy:'age':'-stature'">--> <li ng-repeat="item2 in items2|orderBy:'age':'stature':true"> <div> <b>name</b> <u ng-bind="item2.name"></u> </div> <div> <b>age</b> <i ng-bind="item2.age"></i> </div> <div> <b>stature</b> <i ng-bind="item2.stature"></i> </div> </li> </ul>
效果展示:
5 想先按年齡升序在按身高降序(全是降序了,達(dá)不到效果,見第7例) name zyh age 29 stature 165 name xzl age 27 stature 175 name ljy age 27 stature 165 name nick age 25 stature 170
<ul> <li ng-repeat="item2 in items2|orderBy:['age','stature']"> <div> <b>name</b> <u ng-bind="item2.name"></u> </div> <div> <b>age</b> <i ng-bind="item2.age"></i> </div> <div> <b>stature</b> <i ng-bind="item2.stature"></i> </div> </li> </ul>
效果展示:
6 先按年齡在按身高排序(多個(gè)參數(shù)寫出數(shù)組形式) name nick age 25 stature 170 name ljy age 27 stature 165 name xzl age 27 stature 175 name zyh age 29 stature 165
在參數(shù)前加負(fù)號即可實(shí)現(xiàn)倒序
<ul> <li ng-repeat="item2 in items2|orderBy:['age','-stature']"> <div> <b>name</b> <u ng-bind="item2.name"></u> </div> <div> <b>age</b> <i ng-bind="item2.age"></i> </div> <div> <b>stature</b> <i ng-bind="item2.stature"></i> </div> </li> </ul>
效果展示:
!!7 先按年齡升序在按身高降序(多個(gè)參數(shù)寫出數(shù)組形式) name nick age 25 stature 170 name xzl age 27 stature 175 name ljy age 27 stature 165 name zyh age 29 stature 165
個(gè)人覺得ng內(nèi)置的過濾器好多都比較雞肋。個(gè)性化的需求自定義的過濾器吧。
自定義過濾器就是返回一個(gè)函數(shù),函數(shù)又返回你要的值即可!
angular.module('youAppName',[]) .filter('youFilterName',function(){ return function(){ //你的處理代碼 return result;//返回你要的值 } })
<ul> <li>!!1 求和</li> <li ng-repeat="item1 in items1"> <div ng-bind="item1.male | sumNick:item1.female:item1.gay"></div> </li> </ul>
用法:
管道前后所有參數(shù)即為和
var nickAppModule=angular.module('nickApp',[]); nickAppModule //求和 .filter('sumNick',function(){ return function(){ var arr=Array.prototype.slice.call(arguments),sum=0; for(var i= 0,len=arr.length;i<len;i++){ sum+=arr[i]?arr[i]:0; } return sum; } })
arguments--函數(shù)接受的參數(shù)集合,類數(shù)組;
Array.prototype.slice.call(arguments)
這句將類數(shù)組轉(zhuǎn)為數(shù)組;
sum+=arr[i]?arr[i]:0;
總和sum等于數(shù)組的每個(gè)元素累加的和。避免后臺為傳值,而又將次參數(shù)傳人自定義filer函數(shù)作為參數(shù),容錯(cuò)時(shí)寫成0保險(xiǎn)。
<ul ng-repeat="item1 in items1"> <li>!!2 求百分比</li> <li> <b>male</b> <i ng-bind="item1.male|percentNick:item1.female:item1.gay"></i> </li> <li> <b>female</b> <u ng-bind="item1.female|percentNick:item1.male:item1.gay"></u> </li> <li> <b>gay</b> <s ng-bind="item1.gay|percentNick:item1.female:item1.male"></s> </li> </ul>
用法:
分子寫在管道前面,管道后面的所有參數(shù)和加管道前的參數(shù)和則為分母
var nickAppModule=angular.module('nickApp',[]); nickAppModule //百分比 .filter('percentNick',function(){ return function(){ var arr=Array.prototype.slice.call(arguments),sum=0; for(var i= 0,len=arr.length;i<len;i++){ sum+=arr[i]?arr[i]:0; } //0/0也是nan return sum==0?'0%':Math.round((arr[0]?arr[0]:0)/sum*10000)/100+"%"; } })
這里就是在上面求和的filter上多了一句:
sum==0?'0%':Math.round((arr[0]?arr[0]:0)/sum*10000)/100+"%"
Math內(nèi)置函數(shù),Math.round四舍五入保留整數(shù);
將總和乘以10000除以100拼接百分比號,即保留兩位小數(shù)。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
當(dāng)前題目:angularjs之filter過濾器-創(chuàng)新互聯(lián)
鏈接分享:http://aaarwkj.com/article26/ccdocg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、企業(yè)網(wǎng)站制作、服務(wù)器托管、云服務(wù)器、外貿(mào)網(wǎng)站建設(shè)、營銷型網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容