详解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 call和apply区别及使用方法
Nov 14 Javascript
javascript常用函数归纳整理
Oct 31 Javascript
node.js中的socket.io的广播消息
Dec 15 Javascript
js实现横向百叶窗效果网页切换动画效果的方法
Mar 02 Javascript
JavaScript中常用的验证reg
Oct 13 Javascript
使用JS在浏览器中判断当前网络连接状态的几种方法
May 05 Javascript
Node.js实现连接mysql数据库功能示例
Sep 15 Javascript
js插件实现图片滑动验证码
Sep 29 Javascript
JS实现的合并多个数组去重算法示例
Apr 11 Javascript
解决微信浏览器缓存站点入口文件(IIS部署Vue项目)
Jun 17 Javascript
原生js实现3D轮播图
Mar 21 Javascript
基于原生js实现九宫格算法代码实例
Jul 03 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
盘点被央视点名过的日本动画电影 一部比一部强
2020/03/08 日漫
php关于array_multisort多维数组排序的使用说明
2011/01/04 PHP
php中jpgraph类库的使用介绍
2013/08/08 PHP
php简单判断文本编码的方法
2015/07/30 PHP
YII动态模型(动态表名)支持分析
2016/03/29 PHP
PHP7安装Redis扩展教程【Linux与Windows平台】
2016/09/30 PHP
TBCompressor js代码压缩
2011/01/05 Javascript
关于JavaScript中原型继承中的一点思考
2012/07/25 Javascript
Three.js源码阅读笔记(基础的核心Core对象)
2012/12/27 Javascript
浅析JavaScript中的typeof运算符
2013/11/30 Javascript
构造函数+原型模式构造js自定义对象(最通用)
2014/05/12 Javascript
Validform表单验证总结篇
2016/10/31 Javascript
nodejs根据ip数组在百度地图中进行定位
2017/03/06 NodeJs
讲解vue-router之什么是动态路由
2018/05/28 Javascript
JS实现十分钟倒计时代码实例
2018/10/18 Javascript
JQuery中queue方法用法示例
2019/01/31 jQuery
vue实现随机验证码功能(完整代码)
2019/12/10 Javascript
前端vue如何使用高德地图
2020/11/05 Javascript
[00:56]PWL开团时刻DAY8——追追追追追!
2020/11/09 DOTA
python设计模式大全
2016/06/27 Python
使用XML库的方式,实现RPC通信的方法(推荐)
2017/06/14 Python
Python的缺点和劣势分析
2019/11/19 Python
Python计算指定日期是今年的第几天(三种方法)
2020/03/26 Python
python3+selenium获取页面加载的所有静态资源文件链接操作
2020/05/04 Python
css3与html5实现响应式导航菜单(导航栏)效果分享
2014/02/12 HTML / CSS
中兴通讯全球官方网站:ZTE
2020/12/26 全球购物
VC++笔试题
2014/10/13 面试题
大学生最常用的自我评价
2013/12/07 职场文书
劳动纠纷调解协议书格式
2014/11/30 职场文书
2014年路政工作总结
2014/12/10 职场文书
给上级领导的感谢信
2015/01/22 职场文书
2015年助理政工师工作总结
2015/05/26 职场文书
孔子观后感
2015/06/08 职场文书
校运会通讯稿
2015/07/18 职场文书
Python生成九宫格图片的示例代码
2021/04/14 Python
vue使用echarts实现折线图
2022/03/21 Vue.js