<html>
<head>
<script src="angular.min.js"></script>
<script type="text/javascript">
var arr = [1,2,3,4,5];
arr.splice(0,arr.length-3 );
console.log( arr.splice(0,arr.length-3 ) ); function windowScopedFilter (input,param2) {
var output = [];
console.log( param2 );
angular.forEach(input, function(v,k){
var org_d = v.name+v.phone ;
console.log( org_d ); switch(param2.length){
case 1:
if (org_d.indexOf( param2[0] )!=-1) {
output.push(v);
}
break;
case 2:
if (org_d.indexOf( param2[0] )!=-1 && org_d.indexOf( param2[1] )!=-1 ) {
output.push(v);
}
break;
case 3:
if (org_d.indexOf( param2[0] )!=-1 && org_d.indexOf( param2[1] )!=-1&& org_d.indexOf( param2[2] )!=-1 ) {
output.push(v);
}
break;
} });
return output;
}
var myapp = angular.module('MyFilterApp', []);
myapp.filter('myfilter', function() {
return function(input, param1) {
console.log("------------------------------------------------- begin dump of custom parameters");
console.log("input=",input);
console.log("param1(string)=", param1);
var args = Array.prototype.slice.call(arguments);
console.log("arguments=", args.length,args);
//没有传参
if (3<=args.length) {
console.log("param2(string)=", args[2]);
param2 = args[2];
}
//传1个参数
if (4<=args.length) {
console.log("param3(string)=", args[3]);
param3 = args[3]; return window[args[args.length-1]](input,args.splice(1,args.length-3 ) );
}
//传两个参数
if (5<=args.length) {
console.log("param4(bool)=", args[4]);
param4 = args[5];
args.splice(0,args.length-3 );
return window[args[args.length-1]](input,args.splice(1,args.length-3 ) );
}
console.log("------------------------------------------------- end dump of custom parameters");
// filter //传三个参数
if (6<=args.length) {
// return window[args[5]](input,args[2]);
return window[args[args.length-1]](input,args.splice(1,args.length-3 ) );
}
return input;
};
});
myapp.controller('MyFilterController', ['$scope', function($scope) {
$scope.friends = [{name:'John', phone:'555-1276'},
{name:'Annie', phone:'800-BIG-MARY'},
{name:'Mike', phone:'555-4321'},
{name:'Adam', phone:'555-5678'},
{name:'David', phone:'555-8765'},
{name:'Mikay', phone:'555-5678'}];
}]);
</script>
</head>
<body ng-app="MyFilterApp">
<div ng-controller="MyFilterController">
<table id="searchTextResults">
<tr><th>Name</th><th>Phone</th></tr>
<tr ng-repeat="friend in friends |myfilter:'Mike':'555': true:'windowScopedFilter'">
<td>{{friend.name}}</td>
<td>{{friend.phone}}</td>
</tr>
</table>
</div>
<hr>
</body>
</html>

上面的例子可以直接拿取用,目前最多筛选三个参数

参考文档:

http://www.tuicool.com/articles/ueUZBv

http://www.cnblogs.com/xing901022/p/4290102.html

http://www.codeceo.com/article/angularjs-filter-usage.html

http://www.oschina.net/translate/angularjs-filter-creating-custom-filter

angularjs 过滤多组数据的更多相关文章

  1. excel多组数据散点图生成

    在研究数据分布时,散点图是一类比较常用的方法,通过三点图可以很好的显示数据的分布位置.一组数据生成散点图,利用excel是很容易生成的:但是,多组数据生成散点图,不同组数据用不同颜色表示,那该怎么生成 ...

  2. jquery: json树组数据输出到表格Dom树的处理方法

    项目背景 项目中需要把表格重排显示 处理方法 思路主要是用历遍Json数组把json数据一个个append到5个表格里,还要给每个单元格绑定个单击弹出自定义对话框,表格分了单双行,第一行最后还要改ro ...

  3. checkbox提交多组数据到action

    突然想通过checkbox来提交多组数据到action,一时间想不起来怎么写,到网上流岚大婶们的笔迹之后,有了新发现! 方法一: 在action用一个String类型的变量来接受checkbox传过来 ...

  4. invalid types 'int[int]' for array subscript// EOF 输入多组数据//如何键盘输入EOF

    数组维度搞错了 一次运行,要输入多组数据,直到读至输入文件末尾(EOF)为止 while(scanf("%d %d",&a, &b) != EOF) // 输入结束 ...

  5. 学习Angularjs向数据库添加数据

    今天学习angularjs向数据库添加数据. 学习此篇,得从以往几篇开始,因为那还有创建数据表等演示. 现在来创建一个添加的存储过程: SET ANSI_NULLS ON GO SET QUOTED_ ...

  6. 雷林鹏分享:jQuery EasyUI 表单 - 过滤下拉数据网格

    jQuery EasyUI 表单 - 过滤下拉数据网格 下拉数据网格(Combogrid)组件和下拉框(Combobox)组件的共同点是,除了都具有下拉面板以外,它们都是基于数据网格(Datagrid ...

  7. json 数据类型,后台在组数据时,错一个标点符号,前端都解析不出来。

    json 数据类型,后台在组数据时,错一个标点符号,前端都解析不出来.

  8. atitit.软件开发概念--过滤和投影 数据操作

    atitit.软件开发概念--过滤和投影 数据操作 投影的本质及扩展 物体在太阳光的照射下形成的影子(简称日影)就是平行投影.日影的方向可以反映时间 投影还比喻此物通过彼物表现出来的迹象. 作者::老 ...

  9. C/C++中输入多组数据方法

    --------开始-------- 对于刚开始学编程的人来说每次基本上就是一次数据输入,多次的话基本也是会给定一个数组的大小,但随着做刷算法题开始,题目有的会不直接告诉输入几组数据,基本输入都是多组 ...

随机推荐

  1. C# 从服务器下载文件并保存到客户端

    参考代码: using System; using System.Net; namespace HT.SIHONG.Common.Utility { public class DownloadFile ...

  2. ASP.NET 之页面重定向和传值

    在开发 ASP.NET 网站时,经常需要从一个网页重定向(导航)到另一个网页,同时希望能够将信息从源页传递到目标页.例如,如果你正在开发一个保险网站,需要用一个页面来收集基本信息(用户信息.保险产品信 ...

  3. 306 Additive Number 加法数

    Additive number is a string whose digits can form additive sequence.A valid additive sequence should ...

  4. Snipaste强大离线/在线截屏软件的下载、安装和使用

    步骤一: https://zh.snipaste.com/  ,去此官网下载. 步骤二:由于此是个绿色软件,直接解压即可. 步骤三:使用,见官网.ttps://zh.snipaste.com  按F1 ...

  5. Hbase源码分析:server端RPC

    server端rpc包括master和RegionServer.接下来主要梳理一下,master和regionserver中有关rpc创建,启动以及处理的过程. 1,server rpc的初始化过程 ...

  6. python+opencv+Face++实现人脸识别比对

    2018-03-2010:16:55 代码仓库--GitHub--https://github.com/az666/python_opencv_face- 依旧是先来图片 下面这张是我进行识别的效果( ...

  7. web测试--登录界面怎么测?

    具体需求: 有一个登陆页面, 上面有2个textbox, 一个提交按钮.  请针对这个页面设计30个以上的测试用例. 此题的考察目的: 面试者是否熟悉各种测试方法,是否有丰富的Web测试经验, 是否了 ...

  8. C# 调用Mysql 带参数存储过程

    使用C#调用Mysql 带参数的存储过程: 1.创建带参数的存储过程:USP_Temp_Test 2.两个参数:IN 参数为 P_XML , OUT 参数为 P_ErrorOut 3.C#代码调用该存 ...

  9. Java反射机制实战——字段篇

    首先,我们来认识几个类. Class(java.lang.Class) Class对象是一个特殊对象,每一个类都有一个Class对象,用来创建该类的“常规”对象.可以通过对象的getClass()方法 ...

  10. 【译】x86程序员手册22-6.4页级保护

    6.4 Page-Level Protection 页级保护 Two kinds of protection are related to pages: 与页相关的保护有两类: Restriction ...