angularjs自定义过滤器demo
2016-04-06 20:03
633 查看
这个基于angularjs的过滤器是最近做的"信息管理学院实验室预约"项目中的一个小功能。
以下为数据:
分别在两个select选择星期和课次,列表会即时根据条件更新。
完整代码:
总结:filter可以理解为一个带参数的函数,它把一个对象进行一些处理,然后把处理后的对象返回。不过我认为以上的这个算法有待优化。
以下为数据:
$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>
总结:filter可以理解为一个带参数的函数,它把一个对象进行一些处理,然后把处理后的对象返回。不过我认为以上的这个算法有待优化。
相关文章推荐
- AngularJS之基础-5 路由(定义路由、使用路由)、自定义指令(Directive)
- AngularJS之基础-4 DI(控制器参数、监听)、指令(模板包含、节点控制)、事件绑定
- AngularJS之基础-3 控制器(基本语法)、模块(使用模块注册控制器)
- 慕课网AngularJS实战课程笔记
- AngularJS之基础-2 指令、表达式
- AngularJS开发相关配置
- AngularJS之基础-1 简介(基本概念、环境搭建)
- angular好用的插件集合(持续更新中)
- AngularJs 使用 .value / .constant
- angularjs指令中link方法无法正确获取element
- Angularjs + Webpack 框架里,引入Bootstrap-datepicker插件时,datepicker is not a function错误的解决方法
- Why Angular2
- 过滤器
- 常用指令
- 控制器Controller
- MVVM简介
- angular入门
- angularJS中的ui-router和ng-grid模块
- 指令:ng-bind
- 指令:ng-model