angularjs自定義過濾器demo示例
本文實(shí)例講述了angularjs自定義過濾器demo。分享給大家供大家參考,具體如下:
這個(gè)基于angularjs的過濾器是最近做的"信息管理學(xué)院實(shí)驗(yàn)室預(yù)約"項(xiàng)目中的一個(gè)小功能。
以下為數(shù)據(jù):
$scope['classes']=[{id:1,name:"H503",capacity:40,software:"photoshop,金蝶,AI",freeTime:"周一1-2-3,周五1-2-3,周一5-6,"},
{id:2,name:"H504",capacity:50,software:"chrome,金蝶,office,"
,freeTime:"周二1-2-3,周三3-4,周一5-6,"},
{id:3,name:"H505",capacity:60,software:"chrome,LOL,office,"
,freeTime:"周二1-2-3,周三3-4,周四7-8,"}
];
具體功能:
分別在兩個(gè)select選擇星期和課次,列表會即時(shí)根據(jù)條件更新。
完整代碼:
<!DOCTYPE html>
<html ng-app="myApp" >
<head>
<meta charset="utf-8">
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
</head>
<body>
<div ng-controller="myCtrl">
<select ng-model="day">
<option selected="">周一</option>
<option>周二</option>
<option>周三</option>
<option>周四</option>
<option>周五</option>
</select>
<select ng-model="order">
<option selected="">1-2</option>
<option>1-2-3</option>
<option>3-4</option>
<option>1-2-3-4</option>
<option>5-6</option>
<option>7-8</option>
</select>
<ul>
<li ng-repeat="class in classes | myFiter:day:order">
<span>{{class.id}}</span>
<span>{{class.name}}</span>
<span>{{class.capacity}}</span>
<span>{{class.software}}</span>
</li>
</ul>
</select>
</div>
<script type="text/javascript">
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
//假數(shù)據(jù)
$scope['classes']=[{id:1,name:"H503",capacity:40,software:"photoshop,金蝶,AI",freeTime:"周一1-2-3,周五1-2-3,周一5-6,"},
{id:2,name:"H504",capacity:50,software:"chrome,金蝶,office,"
,freeTime:"周二1-2-3,周三3-4,周一5-6,"},
{id:3,name:"H505",capacity:60,software:"chrome,LOL,office,"
,freeTime:"周二1-2-3,周三3-4,周四7-8,"}
];
//select的默認(rèn)值
$scope.order="1-2";
$scope.day="周一";
});
//自定義過濾器
app.filter('myFiter',function()
{
return function(input,day,order)
{
var time=day+order;
var output=[];
for(var i=0;i<input.length;i++)
{
var n=input[i].freeTime.indexOf(time);
// console.log(n);
// console.log(input[i].freeTime.charAt(n+time.length));
if(n!=-1)//如果能找到
{
if(input[i].freeTime.charAt(n+time.length)==',')
//這樣做是為了防止1-2與1-2-3是一樣的結(jié)果
output.push(input[i]);
}
}
return output;
}
})
</script>
</body>
</html>
運(yùn)行效果:

感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運(yùn)行工具:http://tools.jb51.net/code/HtmlJsRun測試上述代碼運(yùn)行效果。
總結(jié):filter可以理解為一個(gè)帶參數(shù)的函數(shù),它把一個(gè)對象進(jìn)行一些處理,然后把處理后的對象返回。不過我認(rèn)為以上的這個(gè)算法有待優(yōu)化。
更多關(guān)于AngularJS相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《AngularJS指令操作技巧總結(jié)》、《AngularJS入門與進(jìn)階教程》及《AngularJS MVC架構(gòu)總結(jié)》
希望本文所述對大家AngularJS程序設(shè)計(jì)有所幫助。
相關(guān)文章
Angular6實(shí)現(xiàn)拖拽功能指令drag實(shí)例詳解
這篇文章主要為大家介紹了Angular6實(shí)現(xiàn)拖拽功能指令drag實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11
angularJS模態(tài)框$modal實(shí)例代碼
本篇文章主要介紹了angularJS模態(tài)框$modal實(shí)例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05
Web開發(fā)使用Angular實(shí)現(xiàn)用戶密碼強(qiáng)度判別的方法
這篇文章主要介紹了Web開發(fā)使用Angular實(shí)現(xiàn)用戶密碼強(qiáng)度判別的方法,需要的朋友可以參考下2017-09-09
AngularJs學(xué)習(xí)第八篇 過濾器filter創(chuàng)建
這篇文章主要介紹了AngularJs學(xué)習(xí)第八篇 過濾器filter創(chuàng)建的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下2016-06-06
Angular客戶端請求Rest服務(wù)跨域問題的解決方法
本篇文章主要介紹了Angular客戶端請求Rest服務(wù)跨域問題的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09
解決Angularjs異步操作后臺請求用$q.all排列先后順序問題
解決Angularjs異步操作后臺請求用$q.all排列先后順序問題,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-11-11
AngularJS基礎(chǔ) ng-show 指令簡單示例
本文主要介紹AngularJS ng-show 指令,這里對ng-show 指令的基礎(chǔ)知識做了詳細(xì)介紹,并附有代碼示例,希望能幫助學(xué)習(xí)AngularJS的同學(xué)2016-08-08

