『壹』 angularjs怎麼用過濾器篩選日期
ng-repeat="ramCount in ramCountList track by $index | orderBy: ramCount" track by $index 這個是過濾重復值 ramCount是數字類型的,然後按照專ramCount的值進行屬升排序
『貳』 angularjs自定義過濾器怎麼寫
過濾器(filter)正如其名,作用就是接收一個輸入,通過某個規則進行處理,然後返回處回理後的結果。主要答用在數據的格式化上,例如獲取一個數組中的子集,對數組中的元素進行排序等。ng內置了一些過濾器,它們是:currency(貨幣)、date(日期)、filter(子串匹配)、json(格式化json對象)、limitTo(限制個數)、lowercase(小寫)、uppercase(大寫)、number(數字)、orderBy(排序)。總共九種。除此之外還可以自定義過濾器,這個就強大了,可以滿足任何要求的數據處理。
AngularJS中為我們提供了一些內置的過濾器,這里列舉一些自定義過濾器的場景。
『叄』 angularjs $filter過濾器問題
推薦使用angular-ui-grid:
controller:
varapp=angular.mole('app',['ngTouch','ui.grid','ui.grid.pagination']);
app.controller('MainCtrl',['$scope','$http',function($scope,$http){
$scope.gridOptions1={
paginationPageSizes:[25,50,75],
paginationPageSize:25,
columnDefs:[
{name:'name'},
{name:'gender'},
{name:'company'}
]
};
}]);
html:
<divui-grid="gridOptions1"ui-grid-paginationclass="grid"></div>
『肆』 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')
『伍』 angularjs 在未登錄時,如何攔截
http攔截,即$http服務允許我們與服務端交互,有時候我們希望在發出請求之前以及收到響應之後做些事情。
$httpProvider包含了一個interceptors的數組。
我們這樣創建一個interceptor。
app.factory('myInterceptor', ['$log', function($log){
$log.debug('');
var myInterceptor = {};
return myInterceptor;
}])
接著注冊interceptor.
app.config(['$httpProvider', function($httpProvider){
$httpProvider.interceptors.push('myInterceptor');
}])
以下是$http攔截的一些例子。
■ 攔截器中的非同步操作
app.factory('myInterceotpr','someAsyncServcie', function($q, someAsyncServcie){
var requestInterceptor = {
request: function(config){
var deferred = %q.defer();
someAsyncService.doAsyncOperation().then(function(){
...
deferred.resolve(config);
}, function(){
...
deferred.resolve(config);
})
return deferred.promise;
}
};
return requestInterceptor;
})
以上,是一個請求攔截,做了一個非同步操作,根據非同步操作的結果來更新config。
當然也有響應攔截。
app.factory('myInterceptor',['$q', 'someAsyncService', function($q, someAsyncSercice){
var responseInterceptor = {
response: function(response){
var deferred = $q.defer();
someAsyncService.doAsyncOperation().then(function(response){
...
deferred.resolve(response);
}, function(response){
...
deferred.resolve(response);
})
return deferred.promise;
}
};
return responseInterceptor;
}])
■ Session攔截,請求攔截
服務端有2種類型的驗證,一個是基於cookie的,一種是基於token的。對於基於token驗證,當用戶登錄,獲取一個來自服務端的token,這個token在每一次請求時發送給服務端。
創建一個有關session的injector:
app.factory('sessionInjector',['SessionService', function(SessionService){
var sessionInjector = {
request: function(config){
if(!SessionService.isAnonymous){
config.headers['x-session-token'] = SessionService.token;
}
return config;
}
};
return sessionInjector;
}])
可見,把從服務端返回的token放在了config.headers中。
注冊injector:
app.config(['$httpProvider', function($httpProvider){
$httpProvider.interceptors.push('sessionInjector');
}])
發出一個請求:
$http.get('');
攔截前大致是:
{
"transformRequest":[null],
"transformResponse":[null],
"method":"GET",
"url":"",
"headers":{
"Accept": "application/json, text/plain,*/*"
}
}
攔截後,在headers中多兩個一個x-session-token欄位:
{
"transformRequest":[null],
"transformResponse":[null],
"method":"GET",
"url":"",
"headers":{
"Accept": "application/json, text/plain,*/*",
"x-session-token":......
}
}
■ 時間戳,請求和響應攔截
app.factory('timestampMarker',[function(){
var timestampMarker = {
request:function(config){
config.requestTimestamp = new Date().getTime();
return config;
},
response: function(response){
response.config.responseTimestamp = new Date().getTime();
return config;
}
};
return timestampMarker;
}])
以上,在請求和響應時攔截,在config.requestTimestamp和config.responseTimestamp賦上當前的時間。
注冊攔截器:
app.config(['$httpProvider', function($httpProvider){
$httpProvider.interceptors.push('timestampMarker');
}])
然後在運用的時候可以算出請求響應所耗去的時間。
$http.get('').then(function(response){
var time = response.config.responseTime - response.config.requestTimestamp;
console.log('請求耗去的時間為 ' + time);
})
■ 請求錯誤恢復,請求攔截
模擬一個請求攔截的錯誤情形
app.factory('requestRejector',['$q', function($q){
var requestRejector = {
request: function(config){
return $q.reject('requestRejector');
}
};
return requestRejector;
}])
攔截請求錯誤:
app.factory('requestRecoverer',['$q', function($q){
var requestRecoverer = {
requestError: function(rejectReason){
if(rejectReason === 'requestRejector'){
//恢復請求
return {
transformRequest:[],
transformResponse:[],
method:'GET',
url:'',
headers:{
Accept:'application/json, text/plain, */*'
}
};
} else {
return $q.reject(rejectReason);
}
}
};
return requestRecoverer;
}])
注冊攔截器:
?
app.config(['$httpProvider', function($httpProvider){
$httpProvider.interceptors.push('requestRejector');
$httpProvider.interceptors.push('requestRecoverer');
}])
■ Session錯誤
app.factory('sessionRecoverer',['$q','$injector',function($q, $injector){
var sessionRecoverer = {
responseError: function(response){
//如果Session過期
if(response.status == 419){
var SessionService = $injector.get('SessionService');
var $http = $injector.get('$http');
var deferred = $q.defer();
//創建一個新的session
SessionService.login().then(deferred.resolve, deferred.reject);
return deferred.promise.then(function(){
reutrn $http(response.config);
})
}
return $q.reject(response);
}
};
return sessionRecoverer;
}])
『陸』 請教AngularJs如何在js當中將json和orderBy過濾器進行連著傳參...
需求是把json和orderBy這兩個過濾器寫到一個js語句當中,先進行或者最後以回json的格答式輸出,再以age進行由小到大的排序,這樣在一條js語句當中可以實現:
<script>
var modelOne=angular.mole('myapp', []);
m1.controller('Aaa', ['$scope','$filter',function($scope,$filter){
var arr=[{"color":"zred","age":"60"},{"color":"cred","age":"40"},{"color":"dred","age":"90"},{"color":"bred","age":"20"},{"color":"ered","age":"80"}];
$scope.orderByarr=$filter("orderBy")(arr,"age");
}]);
</script>
再上html部分
<body ng-app="myapp">
<div ng-controller="Aaa">
<pre>{{orderBy}}</pre>
</div>
</body>;
『柒』 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能不能獲取過濾後的數據
AngularJS的內置過濾器使用方法:
一個過濾器,不帶參數的情況
{{expression | filter}}
一個過濾器,帶參數的情況
{{expression | filter:arguments}}
一個過濾器,帶多個參數的情況
{{expression | filter: arg1: arg2: ...}}
多個過濾器,不帶參數的情況
{{expression | filter1 | filter2 | ...}}
分別使用以下AngularJS的內置過濾器
currency
currency允許我們設置自己的貨幣符號,默認情況下會採用客戶端所處區域的貨幣符號。
可以這樣使用:{{ 3600 | currency: "$¥"}}
返回結果為$¥123.00
online code點擊預覽
number
number過濾器將數字格式化成文本,它的參數是可選的,用來控制小數點後的截取位數
如果傳入的是一個非數字字元,會返回空字元串
可以這樣使用:{{ 3600 | number:2}}
返回結果為:3,600.00
online code點擊預覽
lowercase
lowercase將字元串轉換為小寫
可以這樣使用:{{ "HEllo" | lowercase}}
返回結果為:hello
online code點擊預覽
uppercase
uppercase將字元串轉換為大寫
可以這樣使用:{{ "HEllo" | uppercase}}
返回結果為:HELLO
online code點擊預覽
json
json過濾器可以將一個JSON或者JavaScript對象轉換成字元串。
這個過濾器對調試相當有用
可以這樣使用:{{ {"name":"dreamapple","language":"AngularJS"} | json}}
返回結果為:{ "name": "dreamapple", "language": "AngularJS" }
online code點擊預覽
date
date過濾器將日期過濾成你想要的格式,這個實在是很好的過濾器。
這個過濾器用法很多我這里列舉幾種常用的
{{ today | date: "yyyy - mm - dd"}}
結果為:2015 - 15 - 13
{{ today | date: "yyyy - mm - dd HH:mm::ss"}}
結果為:2015 - 18 - 13 20:18::38
[online code](2015 - 18 - 13 20:18::38)
『玖』 angularJS 怎樣在controller中使用filter
在controller中使用filter有兩種方式:
1.直接把要使用的過濾器filter注入到controller中,比如有個currencyFilter:
app.controller('test',function($scope,currencyFilter){
$scope.num= currencyFilter(123534);
}
2.可以通過注入$filter過濾器到controller中:
app.controller('test',function($scope,$filter){
$scope.num=$filter('currency')(123534);
$scope.date =$filter('date')(newDate());
}
『拾』 angularjs如何將時間戳轉換成格式化時間求代碼啊
本地化日期格式化:
({{today|date:'medium'}})Nov19,20153:57:48PM
({{today|date:'short'}})11/19/153:57PM
({{today|date:'fullDate'}})Thursday,November19,2015
({{today|date:'longDate'}})November19,2015
({{today|date:'mediumDate'}})Nov19,2015
({{today|date:'shortDate'}})11/19/15
({{today|date:'mediumTime'}})3:57:48PM
({{today|date:'shortTime'}})3:57PM
年份格式化:
四位年份:({{today|date:'yyyy'}})2015
兩位年份:({{today|date:'yy'}})15
一位年份:({{today|date:'y'}})2015
月份格式化:
英文月份:({{today|date:'MMMM'}})November
英文月份簡寫:({{today|date:'MMM'}})Nov
兩位數字月份:({{today|date:'MM'}})11
一年中的第幾個月份:({{today|date:'M'}})11
日期格式化:
數字日期:({{today|date:'dd'}})19
一個月中的第幾天:({{today|date:'d'}})19
英文星期:({{today|date:'EEEE'}})Thursday
英文星期簡寫:({{today|date:'EEE'}})Thu
小時格式化:
24小時制數字小時:({{today|date:'HH'}})15
一天中的第幾個小時:({{today|date:'H'}})15
12小時制數字小時:({{today|date:'hh'}})03
上午或下午的第幾個小時:({{today|date:'h'}})3
分鍾格式化:
數字分鍾數:({{today|date:'mm'}})57
一個小時中的第幾分鍾:({{today|date:'m'}})57
秒數格式化:
數字秒數:({{today|date:'ss'}})48
一分鍾中內的第幾秒:({{today|date:'s'}})48
毫秒數格式化:
毫秒數:({{today|date:'sss'}})541
字元格式化:
上下午標識:({{today|date:'a'}})PM
四位時區標識:({{today|date:'Z'}})+0800
自定義日期格式化:
年月日:({{today|date:'yyyy-MM-dd'}})2015-11-19
時分秒:({{today|date:'HH:mm:ss.sss'}})15:57:48.541