欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

實(shí)例解析angularjs的filter過濾器

 更新時(shí)間:2016年12月14日 11:44:44   作者:webNick  
本文對angularjs的filter過濾器進(jìn)行系統(tǒng)介紹,附上實(shí)例解析,便于理解。具有很好的參考價(jià)值,需要的朋友可以看下

現(xiàn)在公司用ionic,就是基于angularjs封裝了一些api用于webapp,最近用的angularjs的filter確實(shí)省了很多代碼,現(xiàn)在總結(jié)一下!

ng比較雞肋的過濾器,這里就一筆帶過吧!雞湯類常用的filter后面上例子。

lowercase(小寫)

{{ lastName | lowercase }}

uppercase(大寫)

{{ lastName | uppercase }}

number(格式化數(shù)字)

number過濾器可以為一個(gè)數(shù)字加上千位分割,像這樣,123,456,789。同時(shí)接收一個(gè)參數(shù),可以指定小float型保留幾位小數(shù):

{{ num | number : 2 }}

currency (貨幣處理)

{{num | currency : '¥'}}

json(格式化json對象)

{{ jsonTest | json}}

作用就和我們熟悉的JSON.stringify()一樣

 limitTo(限制數(shù)組長度或字符串長度)

{{ childrenArray | limitTo : 3 }}  //將會顯示數(shù)組中的前3項(xiàng)

filter(匹配子串)

用來處理一個(gè)數(shù)組,然后可以過濾出含有某個(gè)子串的元素,作為一個(gè)子數(shù)組來返回??梢允亲址?dāng)?shù)組,也可以是對象數(shù)組。如果是對象數(shù)組,可以匹配屬性的值。它接收一個(gè)參數(shù),用來定義子串的匹配規(guī)則。

html

<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>

js

$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

orderBy排序(個(gè)人認(rèn)為第七例最佳寫法)

ng-repeat生成一個(gè)獨(dú)立的scope作用域,直接在ng-repeat循環(huán)后加管道orderBy排序。

用法很簡單,但有坑需注意兩點(diǎn):

  • 參數(shù)引號勿忘;
  • 參數(shù)形式--直接寫成age,不用寫成item2.age。

3 按年齡排序(默認(rèn)升序)

<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>

效果展示:

按年齡排序(默認(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

4 按年齡排序(加參數(shù)true則為倒序即降序)

<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>

效果展示:

按年齡排序(加參數(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>

效果展示:

想先按年齡升序在按身高降序(全是降序了,達(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

6 先按年齡在按身高排序(多個(gè)參數(shù)寫出數(shù)組形式)

<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>

效果展示:

先按年齡在按身高排序(多個(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

7 先按年齡升序在按身高降序(多個(gè)參數(shù)寫出數(shù)組形式)

 在參數(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ù)又返回你要的值即可!

實(shí)例:

angular.module('youAppName',[])
 .filter('youFilterName',function(){
  return function(){
  //你的處理代碼
  return result;//返回你要的值
  }
 })

自定義一個(gè)求和的過濾器

html

 <ul>
 <li>!!1 求和</li>
 <li ng-repeat="item1 in items1">
 <div ng-bind="item1.male | sumNick:item1.female:item1.gay"></div>
 </li>
 </ul>

用法:

管道前后所有參數(shù)即為和

js

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ù),容錯時(shí)寫成0保險(xiǎn)。

自定義一個(gè)求百分百的過濾器(求保留小數(shù)點(diǎn)后兩位百分比)

html

<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ù)和則為分母

js

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ù)。

完整代碼:

<!DOCTYPE html>
<html lang="zh-CN" ng-app="nickApp">
<head>
 <meta charset="UTF-8">
 <title>ng filter nick</title>
</head>
<body ng-controller="nickCtrl">
 <ul>
 <li>!!1 求和</li>
 <li ng-repeat="item1 in items1">
 <div ng-bind="item1.male | sumNick:item1.female:item1.gay"></div>
 </li>
 </ul>
 <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>
 <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>
 <ul>
 <li>4 按年齡排序(加參數(shù)true則為倒序即降序)</li>
 <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>
 <ul>
 <li>5 想先按年齡升序在按身高降序(全是降序了,達(dá)不到效果,見第7例)</li>
 <!--<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>
 <ul>
 <li>6 先按年齡在按身高排序(多個(gè)參數(shù)寫出數(shù)組形式)</li>
 <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>
 <ul>
 <li>!!7 先按年齡升序在按身高降序(多個(gè)參數(shù)寫出數(shù)組形式)</li>
 <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>
 <ul>
 <li>8 日期1</li>
 <li ng-bind="date|date:'yyyy/MM/dd hh:mm:ss EEEE'"></li>
 <li>2016/11/19 11:59:05 Saturday</li>
 <li>8 日期2</li>
 <li ng-bind="date|date:'yyyy年MM月dd日 h:mma EEEE'"></li>
 <li>2016年11月19日 12:01PM Saturday</li>
 <li>8 日期3</li>
 <li ng-bind="date|date:'yyyy年MM月dd日 hh時(shí)mm分ss秒'"></li>
 <li>2016年11月22日 10時(shí)42分09秒</li>
 <li>8 日期4</li>
 <li ng-bind="date|date:'yyyy/MM/dd hh:mm:ss'"></li>
 <li>2016/11/22 11:16:58</li>
 </ul>
 <div>{{100000|currency:'¥'}}<!--¥可以寫成$或其他--></div>
 <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>
 <script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
 <script>
 var nickAppModule=angular.module('nickApp',[]);
 nickAppModule
 //求和
 .filter('sumNick',function(){//管道前后所有參數(shù)和
  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;
  }
 })
 //百分比
 .filter('percentNick',function(){//小數(shù)點(diǎn)后兩位百分比 分子寫在管道前面,管道后面的所有參數(shù)和加管道前的參數(shù)和為分母
  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+"%";
  }
 })
 </script>
<script>
 nickAppModule
 .controller('nickCtrl',['$scope',function($scope){
 $scope.items1=[{
  male:66,
  female:23,
  gay:5,
  other:'xxx',
  msg:'xxx'
 },
  {
  male:16,
  female:8,
  gay:7,
  other:'xxx',
  msg:'xxx'
  }];
 $scope.items2=[
  {
  name:'ljy',
  age:27,
  stature:165
  },
  {
  name:'nick',
  age:25,
  stature:170
  },
  {
  name:'xzl',
  age:27,
  stature:175
  },
  {
  name:'zyh',
  age:29,
  stature:165
  }];
 $scope.date=new Date();
 $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;};
 }])
</script>
</body>
</html>

以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時(shí)也希望多多支持腳本之家!

相關(guān)文章

  • AngularJS 打開新的標(biāo)簽頁實(shí)現(xiàn)代碼

    AngularJS 打開新的標(biāo)簽頁實(shí)現(xiàn)代碼

    本文通過實(shí)例代碼給大家介紹了angularJS 打開新的標(biāo)簽頁方法,代碼簡單易懂,非常不錯,具有參考借鑒價(jià)值,需要的朋友參考下吧
    2017-09-09
  • 整理AngularJS框架使用過程當(dāng)中的一些性能優(yōu)化要點(diǎn)

    整理AngularJS框架使用過程當(dāng)中的一些性能優(yōu)化要點(diǎn)

    這篇文章主要介紹了AngularJS框架使用過程當(dāng)中的一些性能優(yōu)化要點(diǎn),Angular通常被用來制作大型單頁應(yīng)用,因而性能問題也是必須考慮的因素,需要的朋友可以參考下
    2016-03-03
  • 詳解angularJs指令的3種綁定策略

    詳解angularJs指令的3種綁定策略

    本篇文章主要介紹了angularJs指令的3種綁定策略,詳細(xì)的介紹了@=&的用法和實(shí)例,有興趣的可以了解一下。
    2017-04-04
  • 深入聊一聊Angular開發(fā)的內(nèi)容

    深入聊一聊Angular開發(fā)的內(nèi)容

    使用Angular開發(fā)需要非常多的前置知識,比如TypeScript、RxJS等,所以學(xué)習(xí)成本比較高,下面這篇文章主要給大家關(guān)于Angular開發(fā)內(nèi)容的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • Angular 4.x 路由快速入門學(xué)習(xí)

    Angular 4.x 路由快速入門學(xué)習(xí)

    這篇文章主要介紹了Angular 4.x 路由快速入門學(xué)習(xí),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-05-05
  • js常用正則表達(dá)式集錦

    js常用正則表達(dá)式集錦

    這篇文章主要介紹了js常用正則表達(dá)式集錦,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-05-05
  • 淺談ng-zorro使用心得

    淺談ng-zorro使用心得

    這篇文章主要介紹了淺談ng-zorro使用心得,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-12-12
  • 解決ionic和angular上拉加載的問題

    解決ionic和angular上拉加載的問題

    這篇文章主要介紹了解決ionic和angular上拉加載的問題,需要的朋友可以參考下
    2017-08-08
  • 淺談Angular文字折疊展開組件的原理分析

    淺談Angular文字折疊展開組件的原理分析

    本篇文章主要介紹了淺談Angular文字折疊展開組件的原理分析,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-11-11
  • Angular 2父子組件數(shù)據(jù)傳遞之@Input和@Output詳解(下)

    Angular 2父子組件數(shù)據(jù)傳遞之@Input和@Output詳解(下)

    這篇文章主要給大家介紹了關(guān)于Angular 2父子組件數(shù)據(jù)傳遞之@Input和@Output的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。
    2017-07-07

最新評論