本文實例講述了angularjs自定義過濾器demo。分享給大家供大家參考,具體如下:
這個基于angularjs的過濾器是最近做的"信息管理學院實驗室預約"項目中的一個小功能。
以下為數據:
$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選擇星期和課次,列表會即時根據條件更新。
完整代碼:
<!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) { //假數據 $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的默認值 $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是一樣的結果 output.push(input[i]); } } return output; }})</script></body></html>
運行效果:
感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運行工具:http://tools.VeVB.COm/code/HtmlJsRun測試上述代碼運行效果。
總結:filter可以理解為一個帶參數的函數,它把一個對象進行一些處理,然后把處理后的對象返回。不過我認為以上的這個算法有待優化。
更多關于AngularJS相關內容感興趣的讀者可查看本站專題:《AngularJS指令操作技巧總結》、《AngularJS入門與進階教程》及《AngularJS MVC架構總結》
希望本文所述對大家AngularJS程序設計有所幫助。
新聞熱點
疑難解答