angularjs自定义过滤器demo示例


Posted in Javascript onAugust 24, 2019

本文实例讲述了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>

运行效果:

angularjs自定义过滤器demo示例

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

总结:filter可以理解为一个带参数的函数,它把一个对象进行一些处理,然后把处理后的对象返回。不过我认为以上的这个算法有待优化。

希望本文所述对大家AngularJS程序设计有所帮助。

Javascript 相关文章推荐
JavaScript使用prototype定义对象类型
Feb 07 Javascript
Jquery跨域获得Json时invalid label错误的解决办法
Jan 11 Javascript
EXT窗口Window及对话框MessageBox
Jan 27 Javascript
jQuery1.6 正式版发布并提供下载
May 05 Javascript
批量修改标签css样式以input标签为例
Jul 31 Javascript
基于jquery实现页面滚动时顶部导航显示隐藏
Apr 20 Javascript
JavaScript数组方法总结分析
May 06 Javascript
jQuery ajax全局函数处理session过期后的ajax跳转问题
Jun 03 Javascript
js绑定事件和解绑事件
Apr 27 Javascript
vue forEach循环数组拿到自己想要的数据方法
Sep 21 Javascript
如何利用JavaScript编写更好的条件语句详解
Aug 10 Javascript
Vue实现一种简单的无限循环滚动动画的示例
Jan 10 Vue.js
Jquery实现获取子元素的方法分析
Aug 24 #jQuery
微信小程序class封装http代码实例
Aug 24 #Javascript
微信小程序前端promise封装代码实例
Aug 24 #Javascript
node获取客户端ip功能简单示例
Aug 24 #Javascript
js针对图片加载失败的处理方法分析
Aug 24 #Javascript
js prototype和__proto__的关系是什么
Aug 23 #Javascript
帮你彻底搞懂JS中的prototype、__proto__与constructor(图解)
Aug 23 #Javascript
You might like
网站当前的在线人数
2006/10/09 PHP
浅析php过滤html字符串,防止SQL注入的方法
2013/07/02 PHP
php中strstr、strrchr、substr、stristr四个函数的区别总结
2014/09/22 PHP
php实现scws中文分词搜索的方法
2015/12/25 PHP
如何判断图片地址是否失效
2007/02/02 Javascript
js innerHTML 的一些问题的解决方法
2008/06/22 Javascript
JS中window.open全屏命令解析及使用示例
2013/12/11 Javascript
window.location.href中url中数据量太大时的解决方法
2013/12/23 Javascript
javascript实现将文件保存到本地方法汇总
2015/07/26 Javascript
jQuery实现鼠标滑过图片移动特效
2016/12/08 Javascript
如何获取元素的最终background-color
2017/02/06 Javascript
bootstrapValidator.min.js表单验证插件
2017/02/09 Javascript
js实现移动端编辑添加地址【模仿京东】
2017/04/28 Javascript
JS实现的新闻列表自动滚动效果示例
2019/01/30 Javascript
CKEditor 4.4.1 添加代码高亮显示插件功能教程【使用官方推荐Code Snippet插件】
2019/06/14 Javascript
如何阻止小程序遮罩层下方图层滚动
2019/09/05 Javascript
基于aotu.js实现微信自动添加通讯录中的联系人功能
2020/05/28 Javascript
通过vue刷新左侧菜单栏操作
2020/08/06 Javascript
[03:05]《我与DAC》之xiao8:DAC与BG
2018/03/27 DOTA
python实现根据ip地址反向查找主机名称的方法
2015/04/29 Python
详解Python中open()函数指定文件打开方式的用法
2016/06/04 Python
python 一篇文章搞懂装饰器所有用法(建议收藏)
2019/08/23 Python
Python操作列表常用方法实例小结【创建、遍历、统计、切片等】
2019/10/25 Python
python设置代理和添加镜像源的方法
2020/02/14 Python
Python的collections模块真的很好用
2021/03/01 Python
您的时尚,您的生活方式:DTLR Villa
2019/12/25 全球购物
英国著名药妆店:Superdrug
2021/02/13 全球购物
旅游管理毕业生自荐信
2013/11/05 职场文书
财务会计自荐信范文
2014/02/21 职场文书
汉语专业毕业生自荐信
2014/07/06 职场文书
如何写股份合作协议书
2014/09/11 职场文书
不遵守课堂纪律的检讨书
2014/09/24 职场文书
2014年租房协议书范本
2014/10/30 职场文书
部门2015年度工作总结
2015/04/29 职场文书
贷款工作证明模板
2015/06/12 职场文书
八年级历史教学反思
2016/02/19 职场文书