仍是老習慣咱們先來看看官方關於$filter服務的文檔javascript
{{expression [ | filter_name[:parameter_value] ... ]}}
filterName[string]
:過濾器的名字html<div ng-controller="MainCtrl"> <h3>{{ originalText }}</h3> <h3>{{ filteredText }}</h3> </div>
JS代碼:html
javascriptangular.module('filterExample', []) .controller('MainCtrl', function($scope, $filter) { $scope.originalText = 'hello'; $scope.filteredText = $filter('uppercase')($scope.originalText); });
結果能夠看這裏jsfiddle代碼java
看了上面的代碼,咱們也就掌握了$filter的基本使用方法,下來咱們要建立本身的filter
這纔是真正好玩的事情^_^express
T1:首先咱們來建立咱們的第一個filter數組
html<div ng-app="MyApp"> <div ng-controller="MyController"> <input ng-model="beforeFilter" type="text"> <div ng-bind="afterFilter"></div> </div> </div>
JS代碼以下:app
javascriptangular.module("MyApp", []) // D1 .filter("MyFilter", function () { // D2 return function (beforeFilter) { if (isNaN(beforeFilter)) { return beforeFilter + " is not a number "; } else { return beforeFilter + " is a number "; } } }) .controller("MyController", function ($scope, $filter) { // D3 $scope.$watch("beforeFilter", function (newVal) { $scope.afterFilter = $filter("MyFilter")(newVal); }) });
結果能夠看這裏T1-jsfiddle代碼
關於上面代碼的解釋:函數
$watch
對咱們要檢測的表達式進行檢測,一旦咱們監測的表達式發生變化,咱們就對其進行過濾操做。T2:在這部分中咱們將創造一個可使用參數的過濾器,有沒有一點興奮呢?.net
html<div ng-app="MyApp"> <div ng-controller="MyController"> <input ng-model="beforeFilter" type="text"> <div ng-bind="afterFilter"></div> // H1 <div>{{"hello" | nUpperFilter:1}}</div> </div> </div>
JS代碼以下:code
javascriptangular.module("MyApp", []) .filter("nUpperFilter",function(){ // D1 return function(input, n){ if(isNaN(input)){ var output = []; var index = n - 1 || 0; var indexChar = input[index].toUpperCase(); for(var i = 0; i < input.length; i++){ if(index == i){ output.push(indexChar); } else{ output.push(input[i]); } } // D2 return output.join(''); } else{ return input; } } }) .controller("MyController", function ($scope, $filter) { $scope.$watch("beforeFilter", function (newVal) { $scope.console = newVal; // D3 $scope.afterFilter = $filter("nUpperFilter")(newVal,2); }) });
結果能夠看這裏T2-jsfiddle代碼
下面是關於上面代碼的一些解釋:htm
join()
方法。$filter("nUpperFilter")(newVal,2)
的參數是兩個,第二個參數就是要改變的字符串中特定字母的的位置。<div>{{"hello" | nUpperFilter:1}}</div>
固然若是你們還想深刻地瞭解的話,我推薦你們兩篇文章
若是你們以爲我哪裏有不對的地方,還望及時提出,你們一塊兒進步^_^