详解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 相关文章推荐
用cookies实现的可记忆的样式切换效果代码下载
Dec 24 Javascript
jquery 插件 人性化的消息显示
Jan 21 Javascript
jquery 双色表格实现代码
Dec 08 Javascript
MC Dialog js弹出层 完美兼容多浏览器(5.6更新)
May 06 Javascript
node.js中的Socket.IO使用实例
Nov 04 Javascript
JavaScript对象数组如何按指定属性和排序方向进行排序
Jun 15 Javascript
轻松5句话解决JavaScript的作用域
Jul 15 Javascript
分享JavaScript监听全部Ajax请求事件的方法
Aug 28 Javascript
纯原生js实现贪吃蛇游戏
Apr 16 Javascript
js防抖和节流的深入讲解
Dec 06 Javascript
node中实现删除目录的几种方法
Jun 24 Javascript
jquery添加div实现消息聊天框
Feb 08 jQuery
简化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 magic_quotes_gpc的一点认识与分析
2008/08/18 PHP
discuz authcode 经典php加密解密函数解析
2020/07/12 PHP
基于PHP array数组的教程详解
2013/06/05 PHP
PHP多线程类及用法实例
2014/12/03 PHP
使用ucenter实现多站点同步登录的讲解
2019/03/21 PHP
PHP中通过getopt解析GNU C风格命令行选项
2019/11/18 PHP
PHP与Web页面的交互示例详解一
2020/08/04 PHP
预加载css或javascript的js代码
2010/04/23 Javascript
屏蔽网页右键复制和ctrl+c复制的js代码
2013/01/04 Javascript
js转化毫秒为时间格式代码
2014/04/10 Javascript
javascript实例--教你实现扑克牌洗牌功能
2014/05/15 Javascript
js实现按Ctrl+Enter发送效果
2014/09/18 Javascript
JavaScript实现跑马灯抽奖活动实例代码解析与优化(二)
2016/02/16 Javascript
Bootstrap基本组件学习笔记之面板(14)
2016/12/08 Javascript
jQuery中 bind的用法简单介绍
2017/02/13 Javascript
jquery easyui dataGrid动态改变排序字段名的方法
2017/03/02 Javascript
vue与原生app的对接交互的方法(混合开发)
2018/11/28 Javascript
vue.js实现会动的简历(包含底部导航功能,编辑功能)
2019/04/08 Javascript
CKeditor4 字体颜色功能配置方法教程
2019/06/26 Javascript
解决Layui数据表格显示无数据提示的问题
2019/11/14 Javascript
基于Python实现人脸自动戴口罩系统
2020/02/06 Python
python Canny边缘检测算法的实现
2020/04/24 Python
Django 设置admin后台表和App(应用)为中文名的操作方法
2020/05/10 Python
Python常用断言函数实例汇总
2020/11/30 Python
CSS中几个与换行有关的属性简明总结
2014/04/15 HTML / CSS
奥地利网上现代灯具和灯饰店:Lampenwelt.at
2018/01/29 全球购物
GIVENCHY纪梵希官方旗舰店:高定彩妆与贵族护肤品
2018/04/16 全球购物
俄罗斯电子产品、计算机和家用电器购物网站:OLDI
2019/10/27 全球购物
社会实践自我鉴定
2013/11/07 职场文书
工地安全标语
2014/06/07 职场文书
幼儿园园务工作总结2015
2015/05/18 职场文书
2015年小学语文工作总结
2015/05/25 职场文书
导游词之云南省玉龙雪山
2019/12/19 职场文书
MySQL表的增删改查(基础)
2021/04/05 MySQL
golang import自定义包方式
2021/04/29 Golang
python实现简单石头剪刀布游戏
2021/10/24 Python