標籤:
AngularJS過濾器是用來格式化輸出資料的。除了格式化資料,過濾器還能修改DOM。這使得過濾器通常用來做些如“適時的給輸出加入CSS樣式”等工作。
比如,你可能有些資料在輸出之前需要根據進行本地化。你可以向下面這樣使用鏈式的過濾器來傳遞運算式:
name | uppercase
這個運算式執行時會將name的值傳遞給uppercase過濾器。
寫一個你自己的過濾器非常容易:在你的模組中註冊一個新的過濾器(可注入的)工廠函數就行了。這個工廠函數必須返回一個新的過濾器函數,這個過濾函數的第一個參數接受的是輸入。任何過濾器參數都會被當成附加的參數傳遞給過濾器。
下面的例子展示了逆轉字串文本。另外,它有條件地將文本大寫。
<!doctype html><html ng-app="MyReverseModule"> <head> <script src="http://code.angularjs.org/angular-1.0.2.min.js"></script> <script src="script.js"></script> </head> <body> <div ng-controller="Ctrl"> <input ng-model="greeting" type="greeting"><br> No filter: {{greeting}}<br> Reverse: {{greeting|reverse}}<br> Reverse + uppercase: {{greeting|reverse:true}}<br> </div> </body></html>
script.js:
angular.module(‘MyReverseModule‘, []). filter(‘reverse‘, function() { return function(input, uppercase) { 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; } });function Ctrl($scope) { $scope.greeting = ‘hello‘;}
過濾器可用在任何api或者ng.$rootScoe.Scope的執行過程中,不過一般用來格式化綁定在模板中的運算式。
{{ expression | filter }}
過濾器一般在處理過程中將資料轉變成新的格式。它能使用鏈式風格,還能接受附加參數。
你可以像下面這樣使用鏈式風格:
{{ expression | filter1 | filter2 }}
你也可以使用“:”來傳遞額外的參數給過濾器,比如,將數字123格式化成帶有2位小數的形式:
123 | number:2
下面有些例子,展示了使用不同過濾器格式化之前和之後的樣子:
- 無過濾器: {{1234.5678}} => 1234.5678
- 數字過濾器: {{1234.5678|number}} => 1,234.57. 注意","號和四捨五入後的後兩位。
- 帶參數的過濾器: {{1234.5678|number:5}} => 1,234.56780. 過濾器可以接受額外的參數,參數寫在“:”的後面。比如,
number過濾器接受數值型參數來制定需要展示幾位小數。
加油!
AngularJS開發指南13:AngularJS的過濾器詳解