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 相关文章推荐
网页右键ie不支持event.preventDefault和event.returnValue (需要加window)
Feb 22 Javascript
非html5实现js版弹球游戏示例代码
Sep 22 Javascript
调用DOM对象的focus使文本框获得焦点
Feb 19 Javascript
EditPlus 正则表达式 实战(3)
Dec 15 Javascript
深入理解Commonjs规范及Node模块实现
May 17 Javascript
在vue中获取dom元素内容的方法
Jul 10 Javascript
VueJs使用Amaze ui调整列表和内容页面
Nov 30 Javascript
Django+Vue跨域环境配置详解
Jul 06 Javascript
Element-ui tree组件自定义节点使用方法代码详解
Sep 17 Javascript
angularjs1.X 重构controller 的方法小结
Aug 15 Javascript
JS 遍历 json 和 JQuery 遍历json操作完整示例
Nov 11 jQuery
Javascript实现html转pdf高清版(提高分辨率)
Feb 19 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
php判断文件夹是否存在不存在则创建
2015/04/09 PHP
Yii2 rbac权限控制之rule教程详解
2016/06/23 PHP
简单解析PHP程序的运行流程
2016/06/23 PHP
tbody元素支持嵌套的注意方法
2007/03/24 Javascript
用js实现的检测浏览器和系统的函数
2009/04/09 Javascript
js实现全屏漂浮广告移入光标停止移动
2013/12/02 Javascript
jQuery中:radio选择器用法实例
2015/01/03 Javascript
javascript无刷新评论实现方法
2015/05/13 Javascript
jquery 表单验证之通过 class验证表单不为空
2015/11/02 Javascript
JS弹出新窗口被拦截的解决方法
2016/08/09 Javascript
微信小程序中的onLoad详解及简单实例
2017/04/05 Javascript
Angular表格神器ui-grid应用详解
2017/09/29 Javascript
JS基于for语句编写的九九乘法表示例
2018/01/04 Javascript
微信小程序上传图片实例
2018/05/28 Javascript
Node.js命令行/批处理中如何更改Linux用户密码浅析
2018/07/22 Javascript
使用vue-router为每个路由配置各自的title
2018/07/30 Javascript
JS加密插件CryptoJS实现的DES加密示例
2018/08/16 Javascript
解决vue打包css文件中背景图片的路径问题
2018/09/03 Javascript
mpvue 单文件页面配置详解
2018/12/02 Javascript
关于JavaScript 数组你应该知道的事情(推荐)
2019/04/10 Javascript
[47:36]Optic vs Newbee 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python编程实现希尔排序
2017/04/13 Python
Linux下Pycharm、Anaconda环境配置及使用踩坑
2018/12/19 Python
python 使用cx-freeze打包程序的实现
2020/03/14 Python
3种适用于Python的疯狂秘密武器及原因解析
2020/04/29 Python
法雷奥SQA(electric)面试问题
2016/01/23 面试题
介绍一下Mysql的存储引擎
2015/02/12 面试题
军训感想500字
2014/02/20 职场文书
生日主持词
2014/03/20 职场文书
六个一活动实施方案
2014/03/21 职场文书
毕业大学生自荐信
2014/06/17 职场文书
小学生2015教师节演讲稿
2015/03/19 职场文书
学生犯错保证书
2015/05/09 职场文书
html+css实现文字折叠特效实例
2021/06/02 HTML / CSS
解决SpringBoot跨域的三种方式
2021/06/26 Java/Android
如何利用Python实现一个论文降重工具
2021/07/09 Python