亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解AngularJS中自定義過(guò)濾器

 更新時(shí)間:2015年12月28日 09:59:32   作者:Darren Ji  
過(guò)濾器(filter)正如其名,作用就是接收一個(gè)輸入,通過(guò)某個(gè)規(guī)則進(jìn)行處理,然后返回處理后的結(jié)果。主要用在數(shù)據(jù)的格式化上,例如獲取一個(gè)數(shù)組中的子集,對(duì)數(shù)組中的元素進(jìn)行排序等

過(guò)濾器(filter)正如其名,作用就是接收一個(gè)輸入,通過(guò)某個(gè)規(guī)則進(jìn)行處理,然后返回處理后的結(jié)果。主要用在數(shù)據(jù)的格式化上,例如獲取一個(gè)數(shù)組中的子集,對(duì)數(shù)組中的元素進(jìn)行排序等。ng內(nèi)置了一些過(guò)濾器,它們是:currency(貨幣)、date(日期)、filter(子串匹配)、json(格式化json對(duì)象)、limitTo(限制個(gè)數(shù))、lowercase(小寫)、uppercase(大寫)、number(數(shù)字)、orderBy(排序)。總共九種。除此之外還可以自定義過(guò)濾器,這個(gè)就強(qiáng)大了,可以滿足任何要求的數(shù)據(jù)處理。

AngularJS中為我們提供了一些內(nèi)置的過(guò)濾器,這里列舉一些自定義過(guò)濾器的場(chǎng)景。

自定義過(guò)濾器,不帶參數(shù)

//過(guò)濾 不帶參數(shù)
app.filter('ordinal', function () {
return function (number) {
if (isNaN(number) || number < 1) {
return number;
} else {
var lastDigit = number % 10;
if (lastDigit === 1) {
return number + 'st'
} else if (lastDigit === 2) {
return number + 'nd'
} else if (lastDigit === 3) {
return number + 'rd'
} else if (lastDigit > 3) {
return number + 'th'
}
}
}
});

大致這樣使用:

{{777 | ordinal}}

過(guò)濾 帶參數(shù)

把某個(gè)位置上的字母轉(zhuǎn)換成大寫。

//過(guò)濾 帶參數(shù)
app.filter('capitalize', function () {
//input 需要過(guò)濾的元素
//char位置,索引減一
return function (input, char) {
if (isNaN(input)) {
//如果序號(hào)位置沒(méi)有設(shè)置,索引位置默認(rèn)是0
var char = char - 1 || 0;
//把過(guò)濾元素索引位置上的字母轉(zhuǎn)換成大寫
var letter = input.charAt(char).toUpperCase();
var out = [];
for (var i = 0; i < input.length; i++) {
if (i == char) {
out.push(letter);
} else {
out.push(input[i]);
}
}
return out.join('');
} else {
return input;
}
}
}); 

大致這樣使用:

{{'seven' | capitalize:3}}

過(guò)濾集合

過(guò)濾出集合中滿足某種條件的元素。

var app = angular.module('filters', []);
app.controller('demo', function ($scope) {
$scope.languages = [
{name: 'C#', type: 'static'},
{name: 'PHP', type: 'dynamic'},
{name: 'Go', type: 'static'},
{name: 'JavaScript', type: 'dynamic'},
{name: 'Rust', type: 'static'}
];
});
//過(guò)濾集合
app.filter('staticLanguage', function () {
return function (input) {
var out = [];
angular.forEach(input, function (language) {
if (language.type === 'static') {
out.push(language);
}
});
return out;
}
}); 

大致這樣使用:

<li ng-repeat="lang in languages | staticLanguage">{{lang.name}}</li>

過(guò)濾,帶多個(gè)參數(shù),做多件事

定義數(shù)字的顯示單位和顯示位置。

var app = angular.module('filters', []);
app.controller('demo', function ($scope) {
$scope.digit = 29.88;
});
//過(guò)濾 做多件事 多個(gè)參賽
app.filter('customCurrency', function () {
return function (input, symbol, place) {
if (isNaN(input)) {
return input;
} else {
//檢查symbol是否有實(shí)參
var symbol = symbol || '¥';
var place = place === undefined ? true : place;
if(place===true){
return symbol+input;
}else{
return input + symbol;
}
}
}
}); 

大致這樣使用:

<p><strong>Original:</strong></p>
<ul><li>{{digit}}</li></ul>
<p><strong>Custom Currency Filter</strong></p>
<ul>
<li>{{digit | customCurrency}} --Default</li>
<li>{{digit | customCurrency:'元'}} --custom symbol</li>
<li>{{digit | customCurrency:'元':false}} -- custom symbol and custom location</li>
</ul>

filter的兩種使用方法

1. 在模板中使用filter

我們可以直接在{{}}中使用filter,跟在表達(dá)式后面用 | 分割,語(yǔ)法如下:

{{ expression | filter }}

也可以多個(gè)filter連用,上一個(gè)filter的輸出將作為下一個(gè)filter的輸入(怪不得這貨長(zhǎng)的跟管道一個(gè)樣。。)

{{ expression | filter1 | filter2 | ... }}

filter可以接收參數(shù),參數(shù)用 : 進(jìn)行分割,如下:

{{ expression | filter:argument1:argument2:... }}

除了對(duì){{}}中的數(shù)據(jù)進(jìn)行格式化,我們還可以在指令中使用filter,例如先對(duì)數(shù)組array進(jìn)行過(guò)濾處理,然后再循環(huán)輸出:

<span ng-repeat="a in array | filter ">

2. 在controller和service中使用filter

我們的js代碼中也可以使用過(guò)濾器,方式就是我們熟悉的依賴注入,例如我要在controller中使用currency過(guò)濾器,只需將它注入到該controller中即可,代碼如下:

app.controller('testC',function($scope,currencyFilter){
$scope.num = currencyFilter(123534); 
}

在模板中使用{{num}}就可以直接輸出 $123,534.00了!在服務(wù)中使用filter也是同樣的道理。

此時(shí)你可能會(huì)有疑惑,如果我要在controller中使用多個(gè)filter,難道要一個(gè)一個(gè)注入嗎,這豈不太費(fèi)勁了?小兄弟莫著急~ng提供了一個(gè)$filter服務(wù)可以來(lái)調(diào)用所需的filter,你只需注入一個(gè)$filter就夠了,使用方法如下:

app.controller('testC',function($scope,$filter){
$scope.num = $filter('currency')(123534);
  $scope.date = $filter('date')(new Date()); 
}

可以達(dá)到同樣的效果。好處是你可以方便使用不同的filter了。

相關(guān)文章

  • angular ngClick阻止冒泡使用默認(rèn)行為的方法

    angular ngClick阻止冒泡使用默認(rèn)行為的方法

    這篇文章主要介紹了angular ngClick阻止冒泡使用默認(rèn)行為的方法,較為詳細(xì)的分析了AngularJS中ngClick事件執(zhí)行原理與阻止冒泡的實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2016-11-11
  • Angular2庫(kù)初探

    Angular2庫(kù)初探

    本文將側(cè)重點(diǎn)放到npm上來(lái),看看npm平臺(tái)給ng2帶來(lái)的酷炫的幫助。具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-03-03
  • 利用Angularjs中模塊ui-route管理狀態(tài)的方法

    利用Angularjs中模塊ui-route管理狀態(tài)的方法

    這篇文章主要給大家介紹了如何用Angularjs中的模板ui-route來(lái)管理狀態(tài)的方法,文中通過(guò)示例代碼介紹的很詳細(xì),相信對(duì)大家的理解和學(xué)習(xí)具有一定的參考借鑒價(jià)值,有需要的朋友可以一起來(lái)學(xué)習(xí)學(xué)習(xí)。
    2016-12-12
  • angular.foreach 循環(huán)方法使用指南

    angular.foreach 循環(huán)方法使用指南

    本文主要介紹了angular.foreach 循環(huán)方法使用格式及參數(shù),是篇非常基礎(chǔ)的文章,與需要的小伙伴參考下
    2015-01-01
  • 詳解AngularJS驗(yàn)證、過(guò)濾器、指令

    詳解AngularJS驗(yàn)證、過(guò)濾器、指令

    這篇文章主要介紹了AngularJS驗(yàn)證、過(guò)濾器、指令的相關(guān)知識(shí),angularJS中提供了許多的驗(yàn)證指令,可以輕松的實(shí)現(xiàn)驗(yàn)證,具體詳情大家通過(guò)本文一起學(xué)習(xí)吧,需要的朋友可以參考下
    2017-01-01
  • AngularJS 實(shí)現(xiàn)點(diǎn)擊按鈕獲取驗(yàn)證碼功能實(shí)例代碼

    AngularJS 實(shí)現(xiàn)點(diǎn)擊按鈕獲取驗(yàn)證碼功能實(shí)例代碼

    本文通過(guò)實(shí)例代碼給大家介紹了AngularJS 實(shí)現(xiàn)點(diǎn)擊按鈕獲取驗(yàn)證碼功能,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-07-07
  • angularjs封裝$http為factory的方法

    angularjs封裝$http為factory的方法

    本篇文章主要介紹了angularjs封裝$http為factory的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • Angular?服務(wù)器端渲染應(yīng)用常見(jiàn)的內(nèi)存泄漏問(wèn)題小結(jié)

    Angular?服務(wù)器端渲染應(yīng)用常見(jiàn)的內(nèi)存泄漏問(wèn)題小結(jié)

    這篇文章主要介紹了Angular?服務(wù)器端渲染應(yīng)用一個(gè)常見(jiàn)的內(nèi)存泄漏問(wèn)題,主要包括屏幕閃爍問(wèn)題,出現(xiàn)閃爍的原因,在于 Angular 不知道如何重用它在服務(wù)器上成功渲染的內(nèi)容,本文給大家介紹的非常詳細(xì),需要的朋友一起學(xué)習(xí)下吧
    2022-06-06
  • 在Angular項(xiàng)目使用socket.io實(shí)現(xiàn)通信的方法

    在Angular項(xiàng)目使用socket.io實(shí)現(xiàn)通信的方法

    這篇文章主要介紹了在Angular項(xiàng)目使用socket.io實(shí)現(xiàn)通信的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • AngularJS實(shí)現(xiàn)的省市二級(jí)聯(lián)動(dòng)功能示例【可對(duì)選項(xiàng)實(shí)現(xiàn)增刪】

    AngularJS實(shí)現(xiàn)的省市二級(jí)聯(lián)動(dòng)功能示例【可對(duì)選項(xiàng)實(shí)現(xiàn)增刪】

    這篇文章主要介紹了AngularJS實(shí)現(xiàn)的省市二級(jí)聯(lián)動(dòng)功能,涉及事件監(jiān)聽(tīng)、響應(yīng)及頁(yè)面元素動(dòng)態(tài)操作相關(guān)技巧,此外還具備對(duì)選項(xiàng)進(jìn)行增刪的功能,需要的朋友可以參考下
    2017-10-10

最新評(píng)論