是否可以在不修改实际数据集的情况下将筛选器应用于从数据集计算的值?例如
<input ng-model="query">
<li ng-repeat='val in values | filter:query'>
{{val.a}} + {{val.b}}
</li>
我想搜索val.a+val.b 的结果
app.filter('customFilter', function(){
return function(input){
for (var i = 0; i < input.length; i++){
input[i].search = input[i].a + input[i].b;
}
return input;
}
})
<li ng-repeat="name in names | customFilter | filter : {search: query}">
这里我创建了一个简单的fiddle来演示相同的东西。使用自定义筛选器按用户搜索帖子和评论的总和。
myApp.filter('sumofTwo', function() {
return function(items, search) {
var temp=[];
if (!search) {
return items;
}
for(i=0;i<items.length;i++){
console.log(search);
console.log(items[i].posts+items[i].comments);
if((items[i].posts+items[i].comments)==search){
temp.push(items[i]);
}
}
return temp;
}
});
$scope.users = [{
name: 'Kenny',
posts: 1,
comments: 6
}, {
name: 'Kyle',
posts: 2,
comments: 7
}, {
name: 'Eric',
posts: 3,
comments: 8
}, {
name: 'Stan',
posts: 4,
comments: 9
}, {
name: 'Butters',
posts: 5,
comments: 10
}, ];