我知道这是微不足道的,但我有一个疑问需要澄清。
我的收藏集'rule' => function ($value, $context) {
if ($value < 10) {
return __('Error message for value < 10');
} else if ($value > 10 && $value <20) {
return __('Error message for value between 10 and 20');
}
return true;
},
差不多vm.groups
。现在,每个对象都有1000 objects
。
网格仅显示name, id, links etc. property fields
。
现在,有一个文本框,我们输入一些文本,我们必须根据我们输入的内容过滤数据,但过滤必须仅在对象的名称和id字段内发生,而不是在其他字段存在在对象内。
所以,这两件事都可以完成,
1)我从原始集合对象创建一个临时集合,只有name和id字段,然后将集合绑定到view。
name and id
2)或者,我创建了一个自定义过滤器 // vm.groups.forEach(function(element) {
// vm.displayedFieldGroups.
// push({name: element.name,id: element.id,transformedId: element.transformedId});
// });
:
vm.customSearch
在视图中vm.customSearch = function(searchVal) {
if(vm.filter.length) {
if(vm.filter.toLowerCase().indexOf(searchVal.name.toLowerCase) !== -1 ||
vm.filter.toLowerCase().indexOf(searchVal.name.toLowerCase) !== -1) {
console.log(searchVal);
return true;
}else {
return false;
}
} else {
console.log(searchVal);
return true;
}
};
。
但我认为vm.groups | filter: vm.customSearch
。
我是对的吗? 哪种方法正确?
更新
这是针对遗留应用程序的。已经实现了一个过滤器,但只是遍历了对象中的所有字段。我只需要过滤对象的名称和id字段。
因此,second method is slower because each value in the collection would be passed to the filter which is obviously tedious for huge collection
答案 0 :(得分:1)
您认为过滤器会遍历源数组中的每个项目,并且每次有一个摘要周期时都会运行过滤器功能。
您应该继续第一种方法。