angularjs自定义过滤器demo示例
- 作者: 谁的浮生乱了谁的流年
- 来源: 51数据库
- 2021-08-05
本文实例讲述了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://www.51sjk.com/Upload/Articles/1/0/262/262552_20210702002945635.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可以理解为一个带参数的函数,它把一个对象进行一些处理,然后把处理后的对象返回。不过我认为以上的这个算法有待优化。
推荐阅读
热点文章
Angular中响应式表单的三种更新值方法详析
7
Angularjs实现下拉框联动的示例代码
7
详解AngularJS跨页面传值(ui-router)
2
详解AngularJS1.x学习directive 中‘& ’‘=’ ‘@’符号的区别使用
3
angular2路由切换改变页面title的示例代码
4
Angular2 组件间通过@Input @Output通讯示例
5
Angularjs中ng-repeat的简单实例
3
AngularJS 中ui-view传参的实例详解
4
浅谈Angular路由守卫
4
详解基于Angular4+ server render(服务端渲染)开发教程
4
