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 相关文章推荐
jQuery 位置函数offset,innerWidth,innerHeight,outerWidth,outerHeight,scrollTop,scrollLeft
Mar 23 Javascript
使用jQuery UI的tooltip函数修饰title属性的气泡悬浮框
Jun 24 Javascript
js跳转页面方法总结
Jan 29 Javascript
ajaxFileUpload.js插件支持多文件上传的方法
Sep 02 Javascript
解决jquery插件:TypeError:$.browser is undefined报错的方法
Nov 21 Javascript
jQuery validate验证插件使用详解
May 11 Javascript
基于Javascript实现的不重复ID的生成器
Dec 25 Javascript
ES6新特性六:promise对象实例详解
Apr 21 Javascript
jQuery中常用动画效果函数知识点整理
Aug 19 jQuery
JavaScript实现图片的放大缩小及拖拽功能示例
May 14 Javascript
javascript创建元素和删除元素实例小结
Jun 19 Javascript
Javascript前端下载后台传来的文件流代码实例
Aug 18 Javascript
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
浅析51个PHP处理字符串的函数
2013/08/02 PHP
PHP函数in_array()使用详解
2014/08/20 PHP
PHP 搜索查询功能实现
2016/11/29 PHP
PHP回调函数概念与用法实例分析
2017/11/03 PHP
PHP PDOStatement::getAttribute讲解
2019/02/01 PHP
JavaScript 解析读取XML文档 实例代码
2009/07/07 Javascript
js加强的经典分页实例
2013/03/15 Javascript
Javascript实现动态菜单添加的实例代码
2013/07/05 Javascript
xmlhttp缓存清除的2种解决方法
2013/12/13 Javascript
IE下支持文本框和密码框placeholder效果的JQuery插件分享
2015/01/31 Javascript
javascript引用类型之时间Date和数组Array
2015/08/27 Javascript
JavaScript多图片上传案例
2015/09/28 Javascript
js实现的二分查找算法实例
2016/01/21 Javascript
jQuery实现的右下角广告窗体跟随效果示例
2016/09/16 Javascript
vue.js 底部导航栏 一级路由显示 子路由不显示的解决方法
2018/03/09 Javascript
三种Webpack打包方式(小结)
2018/09/19 Javascript
深入理解JavaScript 中的执行上下文和执行栈
2018/10/23 Javascript
Vue列表如何实现滚动到指定位置样式改变效果
2020/05/09 Javascript
[01:34]2014DOTA2展望TI 剑指西雅图VG战队专访
2014/06/30 DOTA
[01:09]2014DOTA2国际邀请赛 TI4西雅图DOTA2 中国美女coser加油助威
2014/07/20 DOTA
Zabbix实现微信报警功能
2016/10/09 Python
解决Python的str强转int时遇到的问题
2018/04/09 Python
JavaScript中的模拟事件和自定义事件实例分析
2018/07/27 Python
Python使用sqlalchemy模块连接数据库操作示例
2019/03/13 Python
视图的作用
2014/12/19 面试题
护士毕业生自我鉴定
2014/02/08 职场文书
开学季活动策划方案
2014/02/28 职场文书
《长城和运河》教学反思
2014/04/14 职场文书
组织鉴定材料
2014/06/02 职场文书
学校感恩教育活动总结
2014/07/07 职场文书
手机被没收的检讨书
2014/10/04 职场文书
合伙经营协议书范本(通用版)
2014/12/03 职场文书
质量整改通知单
2015/04/21 职场文书
如何书写你的职业生涯规划书?
2019/06/27 职场文书
node快速搭建后台的实现步骤
2022/02/18 NodeJs
Python使用pyecharts控件绘制图表
2022/06/05 Python