详解AngularJS 过滤器的使用


Posted in Javascript onJune 02, 2018

考评员综合查询,查询条件有:区域、所在单位、从事专业、资格证名称、有效期至。

详解AngularJS 过滤器的使用

如果我们的所有数据查询都放在后台的话。依据拼接的查询条件,选择区域、所在单位、从事专业查询的是人员表,而选择资格证名称、有效期至查询的是人员资质表。

详解AngularJS 过滤器的使用

查询都放到后台,这种以我们固有的思路去设计是可以实现的。

那就写两个接口,一个根据区域、所在单位、从事专业查询人员表,一个根据资格证名称、有效期至、区域、所在单位、从事专业查询人员资质表。不过是拼接谓语时多join几下罢了。

然后前台监听用户选中的查询条件,根据不同的查询条件去请求相应的接口。

虽然这样可以实现,但是此处的考评员的数量不会很多,我们大可以根据区域、所在单位、从事专业查询人员,OneToMany直接将相应的人员资质带出来,然后再根据用户选中的资格证名称和有效期至作为条件对人员资质进行过滤,在前台过滤出用户想要的数据。

过滤器思路

过滤器,本质就是一个方法,输入什么,然后输出什么。

符合此处需求传入的参数应该为人员,资格证名称,有效期至,然后输出为处理过的人员。

过滤人员的人员资质,可能对于不熟悉本项目的人不容易理解,所以这里以人和电脑为例,一个人,可以有多个电脑,需求是将这个人的不符合过滤条件的电脑从数组中移除。

webApp.filter('yunzhiComputer', function() {
  return function(users, computerName) {
    angular.forEach(users, function(user) {
      angular.forEach(user.computers, function(computer, index) {
        if (computer.name !== computerName) {
          // 如果不符合条件,将该项从数组中移除
          user.computers.splice(index, 1);
        }
      });
    });
    return users;
  };
});
ng-repeat="user in users | yunzhiComputer: 'Mac'"

V层过滤的问题

因为此处的考评员查询需要进行分页,因为数据量较少,所以计划在前台分页。

分页之后,那循环中的users就是我们分页完的人。

假如一共有两页数据,每页十条,第一页有一条符合的,第二页有三条符合的,如果使用者在第一页进行过滤,那最后显示出来的就是一条数据,显示不出第二页符合条件的数据。

C层过滤

原来是先在C层分页,然后在V层进行过滤,为了避免分页引起的数据过滤错误,所以决定将过滤器放到C层使用,先过滤,后分页。

Filter - AngularJS

angular.module('FilterInControllerModule', []).
controller('FilterController', ['filterFilter', function FilterController(filterFilter) {
 this.array = [
  {name: 'Tobias'},
  {name: 'Jeff'},
  {name: 'Brian'},
  {name: 'Igor'},
  {name: 'James'},
  {name: 'Brad'}
 ];
 this.filteredArray = filterFilter(this.array, 'a');
}]);

第一种是AngularJS官方给出的写法,直接过滤器名加上Filter可以直接依赖注入过滤器,例如我们这里的过滤器叫做yunzhiComputer,我们可以直接依赖注入yunzhiComputerFilter

How to use a filter in a controller - StackOverflow

function myCtrl($scope, $filter)
{
  $filter('filtername')(arg1,arg2);
}

这是StackOverflow上给出的写法,我比较喜欢这种写法,毕竟我们写过滤器,为了防止和已有的库冲突,所以我们要将过滤器加上前缀yunzhi,然后还要在命名上大致描述这个过滤器的功能,这就使得过滤器的名称很长,再加上Filter,那就更长了,完全没必要。毕竟$filter中的字符串还是可以让他人去直接粘贴然后Ctrl + P直接查询到这个过滤器。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
从javascript语言本身谈项目实战
Dec 27 Javascript
jQuery LigerUI 使用教程表格篇(1)
Jan 18 Javascript
页面实时更新时间的JS实例代码
Dec 18 Javascript
js实现同一个页面多个渐变效果的方法
Apr 10 Javascript
Jquery使用css方法改变样式实例
May 18 Javascript
JS+CSS实现仿支付宝菜单选中效果代码
Sep 25 Javascript
轻松实现javascript图片轮播特效
Jan 13 Javascript
Js与Jq获取浏览器和对象值的方法
Mar 18 Javascript
使用vue-cli(vue脚手架)快速搭建项目的方法
May 21 Javascript
Vue2.x Todo之自定义指令实现自动聚焦的方法
Jan 08 Javascript
微信头像地址失效踩坑记附带解决方案
Sep 23 Javascript
vue 开发之路由配置方法详解
Dec 02 Javascript
简化vuex的状态管理方案的方法
Jun 02 #Javascript
深入了解javascript 数组的sort方法
Jun 01 #Javascript
js 数组详细操作方法及解析合集
Jun 01 #Javascript
vue 中动态绑定class 和 style的方法代码详解
Jun 01 #Javascript
一个简单的node.js界面实现方法
Jun 01 #Javascript
浅析前端路由简介以及vue-router实现原理
Jun 01 #Javascript
Vue中的混入的使用(vue mixins)
Jun 01 #Javascript
You might like
图象函数中的中文显示
2006/10/09 PHP
PHP5.2中date()函数显示时间与北京时间相差8小时的解决办法
2009/05/28 PHP
php Smarty初体验二 获取配置信息
2011/08/08 PHP
ThinkPHP的I方法使用详解
2014/06/18 PHP
ThinkPHP中关联查询实例
2014/12/02 PHP
php字符串按照单词进行反转的方法
2015/03/14 PHP
PHP实现打包zip并下载功能
2018/06/12 PHP
悄悄用脚本检查你访问过哪些网站的代码
2010/12/04 Javascript
window.parent与window.openner区别介绍
2012/04/12 Javascript
JS中的this变量的使用介绍
2013/10/21 Javascript
使用jQuery在对象中缓存选择器的简单方法
2015/06/30 Javascript
javascript中substring()、substr()、slice()的区别
2015/08/30 Javascript
浏览器兼容性问题大汇总
2015/12/17 Javascript
javascript+HTML5 Canvas绘制转盘抽奖
2020/05/16 Javascript
JavaScript常用判断写法大全(推荐)
2016/05/30 Javascript
详解HTTPS 的原理和 NodeJS 的实现
2017/07/04 NodeJs
微信小程序 数据缓存实现方法详解
2019/08/26 Javascript
Openlayers绘制地图标注
2020/09/28 Javascript
[01:14]2014DOTA2展望TI 剑指西雅图newbee战队专访
2014/06/30 DOTA
python获取豆瓣电影简介代码分享
2014/01/16 Python
python使用cStringIO实现临时内存文件访问的方法
2015/03/26 Python
python自带的http模块详解
2016/11/06 Python
python中的随机函数小结
2018/01/27 Python
Python元组及文件核心对象类型详解
2018/02/11 Python
python修改list中所有元素类型的三种方法
2018/04/09 Python
Tornado Web Server框架编写简易Python服务器
2018/07/28 Python
在Python中COM口的调用方法
2019/07/03 Python
HTML5对手机页面长按会粘贴复制禁用的解决方法
2016/07/19 HTML / CSS
英国最大的正宗复古足球衫制造商和零售商:TOFFS
2018/06/21 全球购物
Foreo国际站:Foreo International
2018/10/29 全球购物
String和StringBuffer的区别
2015/08/13 面试题
求职简历中自我评价
2014/01/28 职场文书
法英专业大学生职业生涯规划书范文
2014/09/22 职场文书
学习十八届四中全会依法治国心得体会
2014/11/03 职场文书
离婚协议书范文
2015/01/26 职场文书
2016自主招生教师推荐信范文
2015/03/23 职场文书