angularjs自定义过滤器demo示例
时间:2019-08-26
本文章向大家介绍angularjs自定义过滤器demo示例,主要包括angularjs自定义过滤器demo示例使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
本文实例讲述了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.jb51.net/code/HtmlJsRun测试上述代码运行效果。
总结:filter可以理解为一个带参数的函数,它把一个对象进行一些处理,然后把处理后的对象返回。不过我认为以上的这个算法有待优化。
更多关于AngularJS相关内容感兴趣的读者可查看本站专题:《AngularJS指令操作技巧总结》、《AngularJS入门与进阶教程》及《AngularJS MVC架构总结》
希望本文所述对大家AngularJS程序设计有所帮助。
- python常见模块之random模块
- P2756 飞行员配对方案问题
- P1151 子数整数
- python常见模块之time模块
- U10783 名字被和谐了
- BZOJ 1174: [Balkan2007]Toponyms
- 1355: [Baltic2009]Radio Transmission
- Equation Group(方程式组织)
- Python中下划线---完全解读
- python常见模块之collections模块
- MYSQL之库操作
- 实战-如何获取安卓iOS上的微信聊天记录、通过Metasploit控制安卓
- lightswitch binding custom control
- 3339: Rmq Problem
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法