❶ 如何在angularjs的自定義指令內部定義自定義過濾器
實現方式
下面看一下如何定義聲明一個過濾器,首先依然是要創建我們自己的模塊myAppMole
var myAppMole = angular.mole("myApp",[]);
接下來在模塊的基礎上,創建過濾器:
myAppMole.filter("reverse",function(){
});
其中reverse是過濾器的名字,後面跟著過濾器的方法聲明,在方法中返回另一個方法:
myAppMole.filter("reverse",function(){
return function(input,uppercase){
var out = "";
for(var i=0 ; i<input.length; i++){
out = input.charAt(i)+out;
}
if(uppercase){
out = out.toUpperCase();
}
return out;
}
});
內部返回的方法包含了兩個參數,一個是輸入的值,就是我們過濾器接受的值。
如果想要實現下面的過濾器:
name | reverse
則input就是其中name代表的值。
後面的參數是可選的,我們這里接受uppercase這個bool值,判斷是否要進行大小寫轉換。
內部實現的代碼,就沒必要解釋了。最後返回過濾後的字元串即可。
❷ angular的ng-model可以放過濾器嗎
不可以的,這種情況下你想給數據格式化,最好使用指令,不過ng-value是可以用過濾器的.你試試
❸ Angular ui-router 每個state的過濾器應該怎麼添加
1.推薦把filter寫在另一個js文件中,然後在你的頁面中引用。
可以是下面這樣:
angular.mole('myapp').filter('reverse', function() {
return function(items) {
if(items) {
return items.slice().reverse();
} else {
return [];
}
}
}).filter('slice', function () {
return function (inputArr, start, end) {
var resultArr = [];
if (!angular.isArray(inputArr)) { return inputArr; }
if (start < 0) { start = 0; }
if (end > inputArr.length) { end = inputArr.length; }
for (var i = start; i < end; ++i) {
resultArr.push(inputArr[i]);
}
return resultArr;
};
});
2.你也可以直接進行鏈式的調用,在那個文件下面寫路由呀,可以是這樣(這種方法不推薦,不利於維護。):
angular.mole('myapp',[
'ui.bootstrap'
]).filter('reverse', function() {
return function(items) {
if(items) {
return items.slice().reverse();
} else {
return [];
}
}
}).filter('slice', function () {
return function (inputArr, start, end) {
var resultArr = [];
if (!angular.isArray(inputArr)) { return inputArr; }
if (start < 0) { start = 0; }
if (end > inputArr.length) { end = inputArr.length; }
for (var i = start; i < end; ++i) {
resultArr.push(inputArr[i]);
}
return resultArr;
};
}).config(function ($stateProvider, $urlRouterProvider) {
$urlRouterProvider.when("", "/PageTab");
$stateProvider
.state("PageTab", {
url: "/PageTab",
templateUrl: "PageTab.html"
})
.state("PageTab.Page1", {
url:"/Page1",
templateUrl: "Page-1.html"
})
.state("PageTab.Page2", {
url:"/Page2",
templateUrl: "Page-2.html"
})
.state("PageTab.Page3", {
url:"/Page3",
templateUrl: "Page3.html"
});
});
❹ angularjs自定義的過濾器只能用一次嗎
這個只能自己寫過濾方法版了權
function unique(arr, key){
var tempArr = arr;
for(var i = 0;i < tempArr.length;i++){
for(var j = 0;j< tempArr.length;j++){
if(tempArr[i][key] == tempArr[j][key]){
arr.splice(j,1);
}
}
}
return arr;
}
unique($scope.items,'name')
❺ angular 過濾器一定要在ng-repeat裡面嗎
小寫過濾器
添加小寫的過濾器,使用管道符的表達式。在這里添加小寫過濾器專,以小寫字屬母列印學生姓名。
Enter first name:<input type="text" ng-model="student.firstName">
Enter last name: <input type="text" ng-model="student.lastName">
Name in Upper Case: {{student.fullName() | lowercase}}
貨幣濾波器
加幣過濾器使用管道符返回數的表達式。在這里,我們添加了過濾器,貨幣使用貨幣格式的列印費用。
Enter fees: <input type="text" ng-model="student.fees">
fees: {{student.fees | currency}}
❻ angularjs怎麼自定義過濾器去掉重復項
如果你在前台做起來覺得費勁,為什麼不在後台處理呢?你的這個需求在後台通過sql查詢出來是多簡單。將查詢的結果直接在發給angualr,再顯示到前台形成導航,不是很簡單嗎?
❼ angularjs中有多個過濾器使用方法
一、在視圖模板(View Template)中使用
在表達式中應用Filters (過濾器)
需要遵循格式如下:
{{ expression | filter }} 即 {{ 表達式 | 過濾器 }}
例如:{{ 12 | currency }} 輸出為 $12.00在輸出結果中應用Filters (過濾器)
通俗點講就是Filter的疊加--前一filter的輸出結果作為後一filter的輸入數據源.
需要遵循格式如下:
{{ expression | filter1 | filter2 | ... }} 即 表達式(expression)使用filter1過濾後再使用filter2過濾...
帶參數的Filter
Filter後面可以跟一個或多個參數,用來幫助實現特殊要求、需求的filter.
需要遵循格式如下:
{{ expression | filter:argument1:argument2:... }}
示例: {{ 1234 | number:2 }} = 1,234.00END
二、使用 AngluarJS 內置Filter
AngularJS為我們提供了9個內建的過濾器
分別是currency, date, filter, json, limitTo, uppercase, lowercase, number, orderBy。
具體的用法在AngularJS的文檔中都有詳細說明。下面只說幾個常用的。
currency filter(貨幣過濾器)
currency – 用來將變數轉換成貨幣表現形式
如:{{ amount | currency}}
uppercase/lowercase filter(字母大小寫filter)如:
{{ "lower cap string" | uppercase }}
<input ng-model="userInput"> Uppercased: {{ userInput | uppercase }}
date filter (日期filter)
如:
{{ 1304375948024 | date }}
{{ 1304375948024 | date:"MM/dd/yyyy @ h:mma" }}
json filter
如:
{{ {foo: "bar", baz: 23} | json }}
END
在controllers, services和drictives中使用filter1可以在AngularJS的controller, service或者driective中使用filter, 這時候你需要將依賴的filter名字加入到controller, service或者directive的依賴中去。
2在controller中直接使用filter, 這樣controller可以根據自身需要而適時調用filterEND
三、自定義filter(過濾器)
1AngularJS編寫自定義過濾器的形式和AngularJS的factory service非常相像,一定記得它返回一個對象或者是一個函數即可,編寫的時候,只需要一個帶有一個以上參數的函數即可。
2格式大致如:
app.filter('filter(過濾器)名稱',function(){return function(需要過濾的對象,過濾器參數1,過濾器參數2,...){//...執行業務邏輯代碼return 處理後的對象;
}
});
❽ angularjs自定義過濾器怎麼寫
過濾器(filter)正如其名,作用就是接收一個輸入,通過某個規則進行處理,然後返回處回理後的結果。主要答用在數據的格式化上,例如獲取一個數組中的子集,對數組中的元素進行排序等。ng內置了一些過濾器,它們是:currency(貨幣)、date(日期)、filter(子串匹配)、json(格式化json對象)、limitTo(限制個數)、lowercase(小寫)、uppercase(大寫)、number(數字)、orderBy(排序)。總共九種。除此之外還可以自定義過濾器,這個就強大了,可以滿足任何要求的數據處理。
AngularJS中為我們提供了一些內置的過濾器,這里列舉一些自定義過濾器的場景。
❾ 怎麼用angular js的過濾器實現分類查找數據
工具/原料
AngularJS 腳本庫
IDE
一、在視圖模板(View Template)中使用
在表達式中應用Filters (過濾器)
需要遵循格式如下:
{{ expression | filter }} 即 {{ 表達式 | 過濾器 }}
例如:{{ 12 | currency }} 輸出為 $12.00
在輸出結果中應用Filters (過濾器)
通俗點講就是Filter的疊加--前一filter的輸出結果作為後一filter的輸入數據源.
需要遵循格式如下:
{{ expression | filter1 | filter2 | ... }} 即 表達式(expression)使用filter1過濾後再使用filter2過濾...
帶參數的Filter
Filter後面可以跟一個或多個參數,用來幫助實現特殊要求、需求的filter.
需要遵循格式如下:
{{ expression | filter:argument1:argument2:... }}
示例: {{ 1234 | number:2 }} = 1,234.00
END
二、使用 AngluarJS 內置Filter
AngularJS為我們提供了9個內建的過濾器
分別是currency, date, filter, json, limitTo, uppercase, lowercase, number, orderBy。
具體的用法在AngularJS的文檔中都有詳細說明。下面只說幾個常用的。
currency filter(貨幣過濾器)
currency – 用來將變數轉換成貨幣表現形式
如:{{ amount | currency}}
uppercase/lowercase filter(字母大小寫filter)
如:
{{ "lower cap string" | uppercase }}
<input ng-model="userInput"> Uppercased: {{ userInput | uppercase }}
date filter (日期filter)
如:
{{ 1304375948024 | date }}
{{ 1304375948024 | date:"MM/dd/yyyy @ h:mma" }}
json filter
如:
{{ {foo: "bar", baz: 23} | json }}
END
在controllers, services和drictives中使用filter
1
可以在AngularJS的controller, service或者driective中使用filter, 這時候你需要將依賴的filter名字加入到controller, service或者directive的依賴中去。
2
在controller中直接使用filter, 這樣controller可以根據自身需要而適時調用filter
END
三、自定義filter(過濾器)
1
AngularJS編寫自定義過濾器的形式和AngularJS的factory service非常相像,一定記得它返回一個對象或者是一個函數即可,編寫的時候,只需要一個帶有一個以上參數的函數即可。
2
格式大致如:
app.filter('filter(過濾器)名稱',function(){
return function(需要過濾的對象,過濾器參數1,過濾器參數2,...){
//...執行業務邏輯代碼
return 處理後的對象;
}
});
❿ angular寫的過濾器 怎麼引入
1.過濾器是用來格式化需要展示給用戶的數據,AngularJS中含有實用的內置過濾器可以使用,也支持用戶進行自定義過濾器;
2.過濾器調用方式:
(1) 在HTML的模板中綁定符合{{}} 內通過 | 符號來調用過濾器; 比如{{ name | uppercase }} ------將name字元串中的每個字元轉為大寫字母;
(2) 在JavaScript中可以通過$filter 來調用過濾器,比如:
[javascript] view plain
app.controller("demoController",['$scope','$filter',function($scope,$filter){
$scope.name = $filter("uppercase")('ari');
}]);
(3) 在HTML中使用過濾器時,如需要傳遞參數給過濾器,則需要在過濾器後面加冒號即可,若有多個參數,則在每個參數後面加入冒號即可,比如 {{ 123.4567 | number : 2}} 頁面展示為 123.46
3.angularJS 提供的內置過濾器:
(1) currency: 可以將一個數值格式化為貨幣格式,默認的貨幣符號是當前客戶端所處區域的貨幣符號;
(2)date:將日期格式化為需要的格式,具體的格式參考其API;
(3) filter:從給定數組中選擇一個子集,並將其生成一個新數組返回。filter過濾器的第一個參數可以是字元串、對象或是一個用來從數組中選擇元素函數,傳入不同類型時表現:
1) 字元串:返回所有包含這個字元串的元素,如想返回不包含該字元串的所有元素,則在參數之前加 ! ;
2) 對象:AngularJS會將待過濾對象的屬性同這個對象中的同名屬性進行比較,若屬性值是字元串就會判斷是否包含該字元串;若希望對全部屬性進行對比,將$作為鍵名;
3) 函數: 對待過濾數組的每個元素執行此函數,返回非假值的元素會出現在新的數組中並返回;
filter的第二個參數可以是:
1)true: 用angular.equals(excepted,actual)對兩個值進行嚴格比較;
2) false:進行區分大小寫的子字元串比較;
3)函數:運行這個函數,如果返回真值就接受這個元素;
(4) json:將一個JSON或JavaScript對象轉換成字元串;
(5) limitTo :根據傳入的參數生成一個新的數組或字元串,新的數組或字元串的長度取決於傳入的參數,通過傳入參數的正負值來控制從前面還是後面進行截取;
如果傳入的長度大於被過濾的數組或字元串的長度,則整個數組或字元串都會被返回;
{{ San is very people | limitTo : 3}} ----> San {{ San is very people | limitTo : -3}} ---->ple
(6)lowercase 將過濾字元串轉為小寫字母; uppercase 將過濾字元串轉為大寫字母;
(7) number :將數字格式化成文本,第二個參數是可選,用於控制小數點後截取的位數; 如果傳入的是非數字字元,則返回空字元串;
(8) orderBy:用表達式對指定的數組進行排序,可以接受兩個參數,第一個參數是必須的,第二個參數是可選,第一個參數的情況:
1) 函數:當第一個參數是函數時,該函數會被當作待排序對象的getter方法;
2)字元串:對這個字元串進行解析的結果將決定數組元素的排序方式,可以使用+ 或 - 來強制進行升序和降序;
3)數組:在排序表達式中使用數組元素作為謂詞; 第二個參數用來控制排序的方向;
4.自定義過濾器:
此過濾器用來定義一個名為myFilter的過濾器,作用是將傳入的字元串的首字母轉為大寫字母;
[javascript] view plain
angular.mole("testFilter",[]).filter("myFilter",function(){
return function(input) {
if (input) {
return input[0].toUpperCase() + input.slice(1);
}
}
});
5.表單驗證:
(1) 若想要屏蔽瀏覽器對表單的默認驗證行為,則在表單元素上添加 novalidate標記,若想使用angularJS 的表單驗證功能,需要保證form有name屬性;
(2) input上可以使用的驗證選項:
1)required:驗證當前input是否有值,必填項;
2) ng-minlength/ng-maxlength:當前input能輸入的最大長度和最小長度; <input name="text" ng-minlength="2" ng-maxlength="20"/>
3) ng-pattern :模式匹配,用來確保輸入能夠匹配指定的正則表達式;
4) email:驗證輸入的內容是否是電子郵件,<input type="email" name="email"/>
5) number:驗證輸入的內容是否是數字 <input type="number" name="age"/>
6) URL:驗證輸入的內容是否是URL <input type="url" name="homespace"/>
在javaScript中可以使用這些屬性去對表單做出實時響應 通過formName.inputFieldName.property格式訪問屬性:
1) formName.inputFieldName.$pristine:用來判斷用戶是否修改了表單,若未修改則返回true,若修改過,則返回false;
2) formName.inputFieldName.$dirty:只用用戶修改過表單,無論輸入是否通過驗證,該值都返回true;
3) fornName.inputFieldName.$valid:用來判斷表單的內容是否合法,若表單內容是合法的則返回true;
4) fornName.inputFieldName.$invalid:用來判斷表單的內容是否不合法,若表單內容是不合法的則返回true;
5) fornName.inputFieldName.$error:用來判斷表單所有的驗證內容以及內容是否合法,如果驗證失敗,則屬性值為true,若輸入欄位的值通過驗證則返回false;
(3) $parsers:
當用戶同控制器進行交互並且ngModelController中的$setViewValue()方法被調用時,$parsers數組中的函數會以流水線的形式被逐個調用,第一個調用值會變傳入到第二個$parse中;調用函數時,可以使用$setValidity()函數去設置表單的合法性;
(4) $formatters:
當綁定的ngModel值發生變化,並經過$parsers數組中解析器處理後,這個值會被創遞給$formatters流水線,此函數可以修改並格式化這些值;
(3) ngMessages( 在AngularJS 1.3+以上版本中才包含此指令)
1)ngMessages是angularJs的一個獨立模塊,故需要手動載入 指令為 $ bower install --save angular-messages或在angular官網上下載此文件,然後通過html引入;
2)ngMessages還需要作為引用程序的依賴模塊引入,比如angular.mole("myApp",[ngMessages]);