扩展AngularJS过滤器或构建自定义过滤器
Extending AngularJS filter or building a custom filter
我喜欢AngularJS过滤器的工作方式,只想在现有的过滤器上添加一个函数,允许使用数组来查看数组中是否有值。
如果我有以下数据:
Queue = [
{'Name':'John','Tier':'Gold','Status':'VIP'},
{'Name':'Anna','Tier':'Silver','Status':'Normal'},
{'Name':'Luke','Tier':'Gold','Status':'Normal'},
{'Name':'Mary','Tier':'Bronze','Status':'Normal'},
{'Name':'Jess','Tier':'Bronze','Status':'VIP'},
];
Priority = ['Gold','Silver'];
我想列出我的所有Priority会员的名字,他们也是VIP。
<div ng-repeat="people in Queue | filter: {Tier:Priority} | filter: {Status:'VIP'}">{{ people.Name }}</div>
我想添加过滤器的功能,以检查Tier是否等于Priority数组中的一个项目。
我曾考虑过用AngularJS构建一个自定义过滤器,但我不知道如何使该客户过滤器与现有过滤器一样工作,即能够像现有过滤器那样处理对象、字符串或函数。
我不太关注检查数组中是否存在项的代码,而是关注创建过滤器的代码,就像我可以添加代码来检测给定值是字符串还是数组一样。
在这种情况下,我将使用正则表达式通过自定义过滤器进行检查。
在.html中:
<body ng-app="myApp">
<tr ng-repeat="item in Queue | regex:'Tier':Priority | filter:{Status :'VIP'}">
</body>
和自定义过滤器:
var myApp = angular.module('myApp', []);
myApp.filter('regex', function() {
return function(input, field, priList) {
var result = [];
var priListExp = priList.join("|");
var patt = new RegExp(priListExp, "i"); // without , "i" if you want to use case insensitive
input.forEach( function(pri){
if(patt.test(pri[field])) {
result.push(pri);
}
});
return result;
}
});
演示:Plunker
这是一个想法,不是一个工作代码。如果你在过滤器中传递参数,你可以这样写:
module.filter('filterName', function() {
return function(input, tier, status) {
if (input.Tier == tier)
{
//do something
}
if (input.Status == status)
{
//do something
}
return input;
}
});
在html-
<div ng-repeat="people in Queue | filterName:'Priority':'VIP'">{{ people.Name }}</div>
相关文章:
- 如何在angular.js中动态应用自定义过滤器
- 自定义angularjs过滤器日期时间格式额外字符
- AngularJS自定义过滤器未触发点击事件
- AngularJS中货币过滤器的Javascript代码无法使用自定义符号
- Vue.js如何在定义API变量之前实现自定义过滤器
- 我们如何自定义内置的 Angular “货币”过滤器
- 用于分页的 AngularJS 自定义过滤器
- 为什么我的自定义过滤器会导致无限消化
- 如何仅在文本字段中有值时才将自定义过滤器应用于 ng-repeat
- 指令中的 AngularJS 自定义过滤器以格式化值
- Angular自定义过滤器在处理某些匹配时注销,但会过滤掉所有结果
- Angular js自定义过滤器未定义
- AngularJS自定义过滤器调用了两次,并在第二次调用时删除输入数据
- 自定义Angular.js过滤器在IE8中不返回任何内容,在Chrome/FF中运行良好
- 自定义角度过滤器提供TypeError.不能调用undefined,但变量已定义并有效
- 创建自定义角度过滤器
- 自定义过滤器的问题,我缺少什么
- 如何在Angular 1.3.6上创建一个自定义过滤器来搜索嵌套数组
- json数组angularjs中的自定义过滤器
- 两个日期之间的自定义过滤器 AngularJS