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

Angularjs中使用Filters詳解

 更新時(shí)間:2016年03月11日 09:11:30   投稿:hebedich  
本文給大家總結(jié)了下在Angularjs的模板、控制器、或者服務(wù)中使用Filters的方法,有需要的小伙伴可以參考下

Filter作用就是接收一個(gè)輸入,通過某個(gè)規(guī)則進(jìn)行處理,然后給用戶返回處理后的結(jié)果。Filter可以用在模板、控制器、或者服務(wù),同時(shí)也會(huì)很容易自定義一個(gè)Filter過濾器。

在模板中使用Filter

Filter可以用于在視圖模板中使用一下語法表達(dá)式:

{{ expression | filter }}

例如:格式{{ 12 | currency }}是使用currency的filter用法,讓數(shù)字12過濾為貨幣形式,結(jié)果是$12.00。

Filter可以應(yīng)用到另一個(gè)過濾的結(jié)果中。這就是所謂的“chaining”,使用語法如下:

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

Filter中可能需要參數(shù)。語法為:

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

例如:格式{{ 1234 | number:2 }}是使用number的filter用法,將數(shù)字1234過濾為有兩位小數(shù)點(diǎn)的數(shù)字,結(jié)果為:1,234.00 。

在controller、services、directives中使用filter

 你可以在controller、services、directives中使用filter。

為此,你需要將依賴項(xiàng)名稱注入到你的controller/service/directive中:filter;例如:一個(gè)過濾器是number,你就需要通過使用依賴注入numberFilter。注入的參數(shù)是一個(gè)函數(shù),該函數(shù)將值作為第一個(gè)參數(shù),然后用第二個(gè)參數(shù)來篩選參數(shù)。

下面的例子使用了叫做filter的Filter過濾器。這個(gè)filter可以在sub arrays的基礎(chǔ)上減少arrays。也可以應(yīng)用在視圖模板的標(biāo)記,就像:{{ctrl.array|filter:'a'}},這將為‘a(chǎn)'做一個(gè)全文搜索。然而,在視圖模板中使用filter將會(huì)重新對(duì)每一個(gè)filter過濾,如果數(shù)組比較大的會(huì)是加載多次的。

因此下面的例子直接調(diào)用在控制器中的filter。通過這個(gè),控制器可以在需要是調(diào)用filter(例如:當(dāng)后端數(shù)據(jù)加載時(shí)或者filter的表達(dá)式改變時(shí))。

index.html:

<div ng-controller="FilterController as ctrl">
 <div>
  All entries:
  <span ng-repeat="entry in ctrl.array">{{entry.name}} </span>
 </div>
 <div>
  Entries that contain an "a":
  <span ng-repeat="entry in ctrl.filteredArray">{{entry.name}} </span>
 </div>
</div>
 

script.js:

angular.module('FilterInControllerModule', []).
controller('FilterController', ['filterFilter', function(filterFilter) {
 this.array = [
  {name: 'Tobias'},
  {name: 'Jeff'},
  {name: 'Brian'},
  {name: 'Igor'},
  {name: 'James'},
  {name: 'Brad'}
 ];
 this.filteredArray = filterFilter(this.array, 'a');
}]);

結(jié)果為:

All entries: Tobias Jeff Brian Igor James Brad
Entries that contain an "a": Tobias Brian James Brad

創(chuàng)建自定義filters:

編寫自己的filter是非常簡(jiǎn)單的:只需要在你的模塊中注冊(cè)一個(gè)新的filter factory函數(shù)。在內(nèi)部,這里用了filterProvider。這個(gè)factory函數(shù)應(yīng)該返回一個(gè)新的filter函數(shù)并且將輸入值作為第一個(gè)參數(shù)。任何過濾器參數(shù)都會(huì)作為附加參數(shù)傳遞到過濾器函數(shù)中。

這個(gè)過濾器函數(shù)應(yīng)該是一個(gè)單純的函數(shù)。這意味著它應(yīng)該stateless 和 idempotent。當(dāng)輸入的函數(shù)變化時(shí),angular依賴這些屬性并且執(zhí)行filter。

注意:filter的名稱必須是有效的angular表達(dá)式標(biāo)識(shí)符。例如uppercase或者orderBy。名字是不允許有特殊的字符,如連字符和點(diǎn)是不允許的。如果你希望你的過濾器有名稱空間,那么你可以使用大寫(myappSubsectionFilterx)或者下劃線(myapp_subsection_filterx)。

下面的示例filter是反寫一個(gè)字符串。另外,它可以再加一個(gè)條件使字符串大寫。

index.html

<div ng-controller="MyController">
 <input ng-model="greeting" type="text"><br>
 No filter: {{greeting}}<br>
 Reverse: {{greeting|reverse}}<br>
 Reverse + uppercase: {{greeting|reverse:true}}<br>
 Reverse, filtered in controller: {{filteredGreeting}}<br>
</div>
 

script.js

angular.module('myReverseFilterApp', [])
.filter('reverse', function() {
 return function(input, uppercase) {
  input = input || '';
  var out = "";
  for (var i = 0; i < input.length; i++) {
   out = input.charAt(i) + out;
  }
  // conditional based on optional argument
  if (uppercase) {
   out = out.toUpperCase();
  }
  return out;
 };
})
.controller('MyController', ['$scope', 'reverseFilter', function($scope, reverseFilter) {
 $scope.greeting = 'hello';
 $scope.filteredGreeting = reverseFilter($scope.greeting);
}]);

結(jié)果為:

No filter: hello
Reverse: olleh
Reverse + uppercase: OLLEH
Reverse, filtered in controller: olleh

有狀態(tài)的filters(Stateful filters)

強(qiáng)烈建議寫有狀態(tài)的filters,因?yàn)檫@些不能用angular進(jìn)行優(yōu)化,這往往會(huì)導(dǎo)致性能問題。許多有狀態(tài)的filters轉(zhuǎn)換成無狀態(tài)的filters僅僅通過揭露隱藏的狀態(tài)作為model,并且將其轉(zhuǎn)化為一個(gè)filter參數(shù)。

然而,如果你需要寫一個(gè)有狀態(tài)的filters,你必須將filter標(biāo)記為$stateful,這也就意味著它將在每一個(gè)$digest周期內(nèi)執(zhí)行一次或多次。

index,html

<div ng-controller="MyController">
 Input: <input ng-model="greeting" type="text"><br>
 Decoration: <input ng-model="decoration.symbol" type="text"><br>
 No filter: {{greeting}}<br>
 Decorated: {{greeting | decorate}}<br>
</div>
 

script.js:

angular.module('myStatefulFilterApp', [])
.filter('decorate', ['decoration', function(decoration) {

 function decorateFilter(input) {
  return decoration.symbol + input + decoration.symbol;
 }
 decorateFilter.$stateful = true;

 return decorateFilter;
}])
.controller('MyController', ['$scope', 'decoration', function($scope, decoration) {
 $scope.greeting = 'hello';
 $scope.decoration = decoration;
}])
.value('decoration', {symbol: '*'});

結(jié)果為:

No filter: hello
Decorated: *hello*

下次會(huì)寫一篇angularjs中filter的常用用法。

相關(guān)文章

  • Angular基于Constructor?Parameter的依賴注入方式詳解

    Angular基于Constructor?Parameter的依賴注入方式詳解

    這篇文章主要為大家介紹了Angular基于Constructor?Parameter的依賴注入方式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • angular.js+node.js實(shí)現(xiàn)下載圖片處理詳解

    angular.js+node.js實(shí)現(xiàn)下載圖片處理詳解

    這篇文章主要介紹了angular.js+node.js實(shí)現(xiàn)下載圖片處理的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來一起看看吧。
    2017-03-03
  • 詳解AngularJS中的表達(dá)式使用

    詳解AngularJS中的表達(dá)式使用

    這篇文章主要介紹了詳解AngularJS中的表達(dá)式使用,包括處理數(shù)字和字符串等各種對(duì)象的操作,需要的朋友可以參考下
    2015-06-06
  • 深究AngularJS中ng-drag、ng-drop的用法

    深究AngularJS中ng-drag、ng-drop的用法

    本篇文章主要介紹了深究AngularJS中ng-drag、ng-drop的用法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-06-06
  • Angularjs 依賴壓縮及自定義過濾器寫法

    Angularjs 依賴壓縮及自定義過濾器寫法

    這篇文章主要介紹了Angularjs 依賴壓縮及自定義過濾器寫法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-02-02
  • ng-repeat指令在迭代對(duì)象時(shí)的去重方法

    ng-repeat指令在迭代對(duì)象時(shí)的去重方法

    今天小編就為大家分享一篇ng-repeat指令在迭代對(duì)象時(shí)的去重方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • AngularJS實(shí)現(xiàn)表單驗(yàn)證

    AngularJS實(shí)現(xiàn)表單驗(yàn)證

    客戶端表單驗(yàn)證是AngularJS里面最酷的功能之一。 AngularJS表單驗(yàn)證可以讓你從一開始就寫出一個(gè)具有交互性和可相應(yīng)的現(xiàn)代HTML5表單。在AngularJS中,有許多表單驗(yàn)證指令。在這里,我們將談?wù)剮讉€(gè)最流行指令,然后我們將討論如何編寫自定義的驗(yàn)證。
    2015-01-01
  • Angular引入swiper后autoplay失效的解決辦法詳解

    Angular引入swiper后autoplay失效的解決辦法詳解

    這篇文章主要介紹了Angular引入swiper后autoplay失效的解決辦法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • AngularJS中實(shí)現(xiàn)顯示或隱藏動(dòng)畫效果的方式總結(jié)

    AngularJS中實(shí)現(xiàn)顯示或隱藏動(dòng)畫效果的方式總結(jié)

    AngularJS 是一組用于創(chuàng)建單頁Web應(yīng)用的豐富框架,給構(gòu)建豐富交互地應(yīng)用帶來了所有功能,其中一項(xiàng)主要的特性是Angular對(duì)動(dòng)畫的支持。下面通過本文給大家介紹AngularJS中實(shí)現(xiàn)顯示或隱藏動(dòng)畫效果的方式總結(jié),對(duì)angularjs動(dòng)畫效果相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)
    2015-12-12
  • Angular.Js的自動(dòng)化測(cè)試詳解

    Angular.Js的自動(dòng)化測(cè)試詳解

    當(dāng)Angular項(xiàng)目的規(guī)模到達(dá)一定的程度,就需要進(jìn)行測(cè)試工作了。為什么要自動(dòng)化測(cè)試?1,提高產(chǎn)出質(zhì)量。2,減少重構(gòu)時(shí)的痛。反正我最近重構(gòu)多了,痛苦經(jīng)歷多了。3,便于新人接手。下面這篇文章就給大家詳細(xì)介紹了Angular.Js的自動(dòng)化測(cè)試,有需要的朋友們可以參考借鑒。
    2016-12-12

最新評(píng)論

图木舒克市| 榆树市| 广昌县| 阿坝| 双辽市| 墨脱县| 孟连| 林芝县| 溆浦县| 遂川县| 桂东县| 鄂伦春自治旗| 浦东新区| 通榆县| 青阳县| 巴彦淖尔市| 五大连池市| 包头市| 县级市| 工布江达县| 仁布县| 江口县| 岱山县| 青冈县| 德格县| 满洲里市| 府谷县| 靖远县| 米林县| 扎赉特旗| 威远县| 新和县| 浑源县| 长海县| 永定县| 南澳县| 九龙坡区| 历史| 永年县| 乌拉特前旗| 枣庄市|