引言自定義過濾器1 自定義沒有屬性的過濾器2 自定義有屬性的過濾器3 自定義過濾器中使用服務
在上一篇博客中我們說了9個AngularJS
提供的過濾器,在真實開發環境中AngularJS
提供的9中過濾器遠遠不能滿足我們的需求,在很多的時候我們需要自定義我們自己的過濾器,在本篇博客中我們就介紹一下如何創建我們自己的過濾器,然后如何在表達式中創建自己的過濾器,如何在過濾器服務中使用自己的過濾器。
在自定義過濾器之前,我們先看看一個AngularJS
提供的過濾器都有哪幾部分組成,我們看{{ orderBy_exPRession | orderBy : expression : reverse}}
,分析這個過濾器大致可以分為三部分:
通過上面的分析,我們可以知道一個過濾器分為三個部分,屬性是可選的,過濾器的名稱是必須的,過濾器所處理的數據也是必須的,現在我們就自定義兩個過濾器。
我們創建一個過濾器,所實現的功能:將hello js
替換成hello javascript
,過濾器的名稱為myFilter
。
AngularJS
函數庫(略)創建自定義的過濾器(myFilter
) //創建了一個過濾器 var app=angular.module("myApp",[]); app.filter('myFilter',function(){ return function(input){ //input為我們表達式的輸出值,也就是hello js //這個函數的返回值就是過濾器的返回值 return input.replace(/js/, "Javascript"); } });在表達式中使用我們自定義的過濾器{{"hello js"|myFilter}}//輸出結果為hello javascript 我們創建一個過濾器:過濾器的名稱為myFilter
,過濾器可以填寫一個屬性,這個屬性是boollen
類型,如果是true
,那么將hello js
替換成hello javascript
,如果false
,那么將hello js
替換成hello JAVASCRIPT
,接下來我們實現這個過濾器。
AngularJS
函數庫(略)創建自定義的過濾器(myFilter
) var app=angular.module("myApp",[]); app.filter('myFilter',function(){ return function(input,attr){ //input為我們表達式的輸出值,也就是hello js //attr是我們輸入的屬性值,如果可以輸入兩個屬性,那么在函數中繼續添加屬性 //這個函數的返回值就是過濾器的返回值 if(attr){ return input.replace(/js/, "javascript"); }else{ return input.replace(/js/, "JAVASCRIPT"); } } });在表達式中使用我們的過濾器{{"hello js"|myFilter:true}}//輸出結果為:hello javascript{{"hello js"|myFilter:false}}//輸出結果為:hello JAVASCRIPT在創建我們的過濾器時,我們可以將服務注入進去,只要有供應商的服務都可以注入到過濾器方法中,現在我們就在自定義過濾器中使用服務,現在我們自定義一個自己的過濾器,實現的功能為:將字符串轉換為大寫:
創建過濾器 var app=angular.module("myApp",[]); app.filter('myLowercase',function($filter){ return function(input){ //input為我們表達式的輸出值,也就是hello js //$filter就是注入進來的過濾器服務 return $filter("lowercase")(input); } });使用我們的表達式{{"HELLO JS"|myLowercase}}//運行結果為:hello js新聞熱點
疑難解答