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

Angularjs中使用Filters詳解

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

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

在模板中使用Filter

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

{{ expression | filter }}

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

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

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

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

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

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

在controller、services、directives中使用filter

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

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

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

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

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是非常簡單的:只需要在你的模塊中注冊一個新的filter factory函數(shù)。在內(nèi)部,這里用了filterProvider。這個factory函數(shù)應該返回一個新的filter函數(shù)并且將輸入值作為第一個參數(shù)。任何過濾器參數(shù)都會作為附加參數(shù)傳遞到過濾器函數(shù)中。

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

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

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

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)

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

然而,如果你需要寫一個有狀態(tài)的filters,你必須將filter標記為$stateful,這也就意味著它將在每一個$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*

下次會寫一篇angularjs中filter的常用用法。

相關(guān)文章

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

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

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

    Angular.js實現(xiàn)動態(tài)加載組件詳解

    這篇文章主要給大家介紹了關(guān)于Angular.js實現(xiàn)動態(tài)加載組件的相關(guān)資料,文中介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
    2017-05-05
  • angular.js指令中的controller、compile與link函數(shù)的不同之處

    angular.js指令中的controller、compile與link函數(shù)的不同之處

    最近一位大神問了我angular.js指令中的controller、compile與link函數(shù)的不同,想了想居然回答不出來,所以必須要深入的探究下,下面這篇文章主要介紹了關(guān)于angular.js指令中的controller、compile與link函數(shù)的不同之處,需要的朋友可以參考下。
    2017-05-05
  • AngularJS中控制器函數(shù)的定義與使用方法示例

    AngularJS中控制器函數(shù)的定義與使用方法示例

    這篇文章主要介紹了AngularJS中控制器函數(shù)的定義與使用方法,結(jié)合具體實例形式分析了AngularJS控制器函數(shù)的定義、綁定及相關(guān)使用技巧,需要的朋友可以參考下
    2017-10-10
  • AngularJS的ng-click傳參的方法

    AngularJS的ng-click傳參的方法

    本篇文章主要介紹了AngularJS的ng-click傳參的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • 如何用DevUI搭建自己的Angular組件庫

    如何用DevUI搭建自己的Angular組件庫

    DevUI 是一款面向企業(yè)中后臺產(chǎn)品的開源前端解決方案,它倡導沉浸、靈活、至簡的設計價值觀,提倡設計者為真實的需求服務,為多數(shù)人的設計,拒絕嘩眾取寵、取悅眼球的設計。如果你正在開發(fā) ToB 的工具類產(chǎn)品,DevUI 將是一個很不錯的選擇!
    2021-05-05
  • 從?Angular?Route?中提前獲取數(shù)據(jù)的方法詳解

    從?Angular?Route?中提前獲取數(shù)據(jù)的方法詳解

    這篇文章主要介紹了從?Angular?Route?中提前獲取數(shù)據(jù),通過本文,你將學會使用?resolver,?在?Angular?App?中應用?resolver,應用到一個公共的預加載導航,本文給大家介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • Angular 4環(huán)境準備與Angular cli創(chuàng)建項目詳解

    Angular 4環(huán)境準備與Angular cli創(chuàng)建項目詳解

    Angular4.0來了,更小,更快,改動少,所以下面這篇文章主要給大家介紹了關(guān)于Angular 4環(huán)境準備與學會使用Angular cli創(chuàng)建項目的相關(guān)資料,文中給出了詳細的示例代碼供大家參考學習,需要的朋友們下面來一起看看吧。
    2017-05-05
  • 前后端如何實現(xiàn)登錄token攔截校驗詳解

    前后端如何實現(xiàn)登錄token攔截校驗詳解

    這篇文章主要給大家介紹了關(guān)于前后端如何實現(xiàn)登錄token攔截校驗的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-09-09
  • Angular中Lazy Loading懶加載陷阱避坑最佳實踐

    Angular中Lazy Loading懶加載陷阱避坑最佳實踐

    這篇文章主要為大家介紹了Angular中Lazy Loading懶加載陷阱避坑最佳實踐,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10

最新評論