详解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 相关文章推荐
js获取单选按钮的数据
Nov 27 Javascript
js下获取div中的数据的原理分析
Apr 07 Javascript
基于jquery的自定义鼠标提示效果 jquery.toolTip
Nov 14 Javascript
jquery each()源代码
Feb 14 Javascript
js不能获取隐藏的div的宽度只能先显示后获取
Sep 04 Javascript
浅析JavaScript 调试方法和技巧
Oct 22 Javascript
使用HTML5+Boostrap打造简单的音乐播放器
Aug 05 Javascript
使用jQuery和ajax代替iframe的方法(详解)
Apr 12 jQuery
jquery实现用户登陆界面(示例讲解)
Sep 06 jQuery
vue3.0 CLI - 2.3 - 组件 home.vue 中学习指令和绑定
Sep 14 Javascript
关于微信小程序获取小程序码并接受buffer流保存为图片的方法
Jun 07 Javascript
node.js如何操作MySQL数据库
Oct 29 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
用PHP和ACCESS写聊天室(二)
2006/10/09 PHP
php上传文件的增强函数
2010/07/21 PHP
解析php中memcache的应用
2013/06/18 PHP
比较strtr, str_replace和preg_replace三个函数的效率
2013/06/26 PHP
PHP生成迅雷、快车、旋风等软件的下载链接代码实例
2014/05/12 PHP
PHP实现导出带样式的Excel
2016/08/28 PHP
PHP批量删除jQuery操作
2017/07/23 PHP
php中的钩子理解及应用实例分析
2019/08/30 PHP
浅析ajax请求json数据并用js解析(示例分析)
2013/07/13 Javascript
在JavaScript中实现类的方式探讨
2013/08/28 Javascript
jQuery实现表格颜色交替显示的方法
2015/03/09 Javascript
JS动态显示表格上下frame的方法
2015/03/31 Javascript
js限制文本框只能输入整数或者带小数点的数字
2015/04/27 Javascript
jQuery实现提示密码强度的代码
2015/07/15 Javascript
JS延时提示框实现方法详解
2015/11/26 Javascript
jQuery获取this当前对象子元素对象的方法
2016/11/29 Javascript
微信小程序 特效菜单抽屉效果实例代码
2017/01/11 Javascript
jquery——九宫格大转盘抽奖实例
2017/01/16 Javascript
vue货币过滤器的实现方法
2017/04/01 Javascript
详解Node.js项目APM监控之New Relic
2017/05/12 Javascript
angularJs中$http获取后台数据的实例讲解
2018/08/08 Javascript
为什么说JavaScript预解释是一种毫无节操的机制详析
2018/11/18 Javascript
vue form check 表单验证的实现代码
2018/12/09 Javascript
Python笔记(叁)继续学习
2012/10/24 Python
Python对两个有序列表进行合并和排序的例子
2014/06/13 Python
python根据出生日期返回年龄的方法
2015/03/26 Python
使用python编写简单的小程序编译成exe跑在win10上
2018/01/15 Python
Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例
2019/10/17 Python
python写一个随机点名软件的实例
2019/11/28 Python
python GUI库图形界面开发之PyQt5线程类QThread详细使用方法
2020/02/26 Python
Keras实现DenseNet结构操作
2020/07/06 Python
美国在线打印网站:Overnight Prints
2018/10/11 全球购物
致裁判员加油稿
2014/02/08 职场文书
大学生联谊活动策划书(光棍节)
2014/10/10 职场文书
python 统计代码耗时的几种方法分享
2021/04/02 Python
正确使用MySQL INSERT INTO语句
2021/05/26 MySQL