仍是老习惯咱们先来看看官方关于$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>
固然若是你们还想深刻地了解的话,我推荐你们两篇文章
若是你们以为我哪里有不对的地方,还望及时提出,你们一块儿进步^_^