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

Angularjs之filter過濾器(推薦)

 更新時間:2016年11月27日 09:21:13   作者:webNick  
這篇文章主要介紹了Angularjs之filter過濾器的相關資料,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下

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

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

lowercase(小寫)

{{ lastName | lowercase }}

uppercase(大寫)

{{ lastName | uppercase }}

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

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

{{ num | number : 2 }}

currency (貨幣處理)

{{num | currency : '¥'}}

json(格式化json對象)

{{ jsonTest | json}}

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

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

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

filter(匹配子串)

  用來處理一個數(shù)組,然后可以過濾出含有某個子串的元素,作為一個子數(shù)組來返回。可以是字符串數(shù)組,也可以是對象數(shù)組。如果是對象數(shù)組,可以匹配屬性的值。它接收一個參數(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}]

日期類

  日期過濾器應該是常用過濾器中最簡單的吧!

yyyy--表示年份;
MM--月份(必須大寫);
dd--日期;
hh--時;
mm--分(必須小寫);
ss--秒;
EEEE--星期;
hh:mm--形式是24小時制;
h:mma--12小時制;

其中年、月、日、時、分、秒 或 / : - 等自己試做搭配吧!

<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時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時42分09秒

日期4的顯示效果:

2016/11/22 11:16:58

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

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

用法很簡單,但有坑需注意兩點:

參數(shù)引號勿忘;

參數(shù)形式--直接寫成age,不用寫成item2.age。

3 按年齡排序(默認升序)

<ul>
<li>3 按年齡排序(默認升序)</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 按年齡排序(默認升序)

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>

效果展示:

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 想先按年齡升序在按身高降序(全是降序了,達不到效果,見第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 想先按年齡升序在按身高降序(全是降序了,達不到效果,見第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 先按年齡在按身高排序(多個參數(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>

效果展示:

6 先按年齡在按身高排序(多個參數(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 先按年齡升序在按身高降序(多個參數(shù)寫出數(shù)組形式)

  在參數(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 先按年齡升序在按身高降序(多個參數(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

個人覺得ng內置的過濾器好多都比較雞肋。個性化的需求自定義的過濾器吧。

自定義過濾器

自定義過濾器就是返回一個函數(shù),函數(shù)又返回你要的值即可!

實例:

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

自定義一個求和的過濾器

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ù)組轉為數(shù)組;

sum+=arr[i]?arr[i]:0;

  總和sum等于數(shù)組的每個元素累加的和。避免后臺為傳值,而又將次參數(shù)傳人自定義filer函數(shù)作為參數(shù),容錯時寫成0保險。

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

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內置函數(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 按年齡排序(默認升序)</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 想先按年齡升序在按身高降序(全是降序了,達不到效果,見第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 先按年齡在按身高排序(多個參數(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 先按年齡升序在按身高降序(多個參數(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時mm分ss秒'"></li>
<li>2016年11月22日 10時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ù)點后兩位百分比 分子寫在管道前面,管道后面的所有參數(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>

以上所述是小編給大家介紹的Angularjs之filter過濾器,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的,在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關文章

  • AngularJS 表達式詳解及實例代碼

    AngularJS 表達式詳解及實例代碼

    這篇文章主要介紹了AngularJS 表達式,這里整理了詳細的資料,有需要的小伙伴可以參考下
    2016-09-09
  • AngularJS使用ng-Cloak阻止初始化閃爍問題的方法

    AngularJS使用ng-Cloak阻止初始化閃爍問題的方法

    這篇文章主要介紹了AngularJS使用ng-Cloak阻止初始化閃爍問題的方法,結合實例形式分析了AngularJS使用ng-Cloak來解決初始化時出現(xiàn)閃爍問題的相關技巧,需要的朋友可以參考下
    2016-11-11
  • 詳解Angular系列之變化檢測(Change Detection)

    詳解Angular系列之變化檢測(Change Detection)

    這篇文章主要介紹了詳解Angular系列之變化檢測(Change Detection),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • AngularJS實現(xiàn)頁面跳轉后自動彈出對話框實例代碼

    AngularJS實現(xiàn)頁面跳轉后自動彈出對話框實例代碼

    這篇文章主要介紹了AngularJS實現(xiàn)頁面跳轉后自動彈出對話框實例代碼,然后在文章下面給大家介紹了angularjs頁面加載后自動彈窗的實例代碼,感興趣的朋友參考下吧
    2017-08-08
  • angularJs的ng-class切換class

    angularJs的ng-class切換class

    這篇文章主要介紹了angularJs的ng-class切換class,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • Angular如何在應用初始化時運行代碼詳解

    Angular如何在應用初始化時運行代碼詳解

    這篇文章主要給大家介紹了關于Angular如何在應用初始化時運行代碼的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-06-06
  • 對Angular.js Controller如何進行單元測試

    對Angular.js Controller如何進行單元測試

    這篇文章主要給大家介紹了如何對Angular Controller進行單頁測試。如果你不太了解angular也沒關系,本文也會提及關于Angular的一些知識。文中通過示例代碼介紹的很詳細,詳細對大家的理解和學習很有幫助,下面來一起看看吧。
    2016-10-10
  • Angular4自制一個市縣二級聯(lián)動組件示例

    Angular4自制一個市縣二級聯(lián)動組件示例

    本篇文章主要介紹了Angular4自制一個市縣二級聯(lián)動組件示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • angular-ui-sortable實現(xiàn)可拖拽排序列表

    angular-ui-sortable實現(xiàn)可拖拽排序列表

    這篇文章主要介紹了angular-ui-sortable實現(xiàn)可拖拽排序列表,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • Angular?模塊封裝概念常見的錯誤分析理解

    Angular?模塊封裝概念常見的錯誤分析理解

    這篇文章主要為大家介紹了Angular模塊封裝概念常見的錯誤分析理解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07

最新評論