最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解AngularJS中自定義過濾器

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

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

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

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

//過濾 不帶參數(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}}

過濾 帶參數(shù)

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

//過濾 帶參數(shù)
app.filter('capitalize', function () {
//input 需要過濾的元素
//char位置,索引減一
return function (input, char) {
if (isNaN(input)) {
//如果序號位置沒有設(shè)置,索引位置默認是0
var char = char - 1 || 0;
//把過濾元素索引位置上的字母轉(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}}

過濾集合

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

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'}
];
});
//過濾集合
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>

過濾,帶多個參數(shù),做多件事

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

var app = angular.module('filters', []);
app.controller('demo', function ($scope) {
$scope.digit = 29.88;
});
//過濾 做多件事 多個參賽
app.filter('customCurrency', function () {
return function (input, symbol, place) {
if (isNaN(input)) {
return input;
} else {
//檢查symbol是否有實參
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,跟在表達式后面用 | 分割,語法如下:

{{ expression | filter }}

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

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

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

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

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

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

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,難道要一個一個注入嗎,這豈不太費勁了?小兄弟莫著急~ng提供了一個$filter服務(wù)可以來調(diào)用所需的filter,你只需注入一個$filter就夠了,使用方法如下:

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

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

相關(guān)文章

  • Angular2+國際化方案(ngx-translate)的示例代碼

    Angular2+國際化方案(ngx-translate)的示例代碼

    本篇文章主要介紹了Angular2+國際化方案(ngx-translate)的示例代碼,具有一定的參考價值,有興趣的可以了解一下
    2017-08-08
  • AngularJS中的指令全面解析(必看)

    AngularJS中的指令全面解析(必看)

    下面小編就為大家?guī)硪黄狝ngularJS中的指令全面解析(必看)。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-05-05
  • AngularJS ui-router刷新子頁面路由的方法

    AngularJS ui-router刷新子頁面路由的方法

    這篇文章主要介紹了AngularJS ui-router刷新子頁面路由的方法,網(wǎng)上雖然有很多種方法,但是都不適合小編,今天小編給大家分享一個還不錯的方法,需要的朋友可以參考下
    2018-07-07
  • angularJs使用ng-repeat遍歷后選中某一個的方法

    angularJs使用ng-repeat遍歷后選中某一個的方法

    今天小編就為大家分享一篇angularJs使用ng-repeat遍歷后選中某一個的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • Angular 封裝并發(fā)布組件的方法示例

    Angular 封裝并發(fā)布組件的方法示例

    本篇文章主要介紹了Angular 封裝并發(fā)布組件的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • 深究AngularJS中$sce的使用

    深究AngularJS中$sce的使用

    本篇文章主要介紹了深究AngularJS中$sce的使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • 詳解Angular中的自定義服務(wù)Service、Provider以及Factory

    詳解Angular中的自定義服務(wù)Service、Provider以及Factory

    本篇文章主要介紹了詳解Angular中的自定義服務(wù)Service、Provider以及Factory,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • AngularJS表格樣式簡單設(shè)置方法示例

    AngularJS表格樣式簡單設(shè)置方法示例

    這篇文章主要介紹了AngularJS表格樣式簡單設(shè)置方法,結(jié)合實例形式分析了AngularJS結(jié)合bootstrap針對表格樣式的相關(guān)設(shè)置技巧,需要的朋友可以參考下
    2017-03-03
  • Angular4學習筆記之準備和環(huán)境搭建項目

    Angular4學習筆記之準備和環(huán)境搭建項目

    這篇文章主要介紹了Angular4學習筆記之準備和環(huán)境搭建項目,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • Angular中使用嵌套Form的詳細步驟

    Angular中使用嵌套Form的詳細步驟

    Angular響應(yīng)式表單使用顯式的、不可變的方式,管理表單在特定的時間點上的狀態(tài),下面這篇文章主要給大家介紹了關(guān)于Angular中使用嵌套Form的詳細步驟,需要的朋友可以參考下
    2022-04-04

最新評論

元阳县| 富裕县| 威宁| 清徐县| 分宜县| 石阡县| 随州市| 黎平县| 清原| 毕节市| 湖口县| 阿拉善左旗| 阿鲁科尔沁旗| 邓州市| 隆林| 女性| 资中县| 图木舒克市| 德安县| 镇宁| 东阿县| 视频| 江西省| 壶关县| 昆明市| 栖霞市| 皮山县| 西丰县| 凤阳县| 巩义市| 弥渡县| 油尖旺区| 七台河市| 札达县| 台湾省| 甘孜| 福贡县| 四会市| 石屏县| 罗江县| 贵阳市|