我正在尝试使用ng-repeat
过滤结果,但使用“智能搜索”功能,即。使用多个关键字进行搜索。该集合是一个复杂的对象数组,包含对象。
根据Angular Docs: $filter,您可以使用{$: "keyword"}
过滤器功能进行深度过滤,但我还没有使用它。
段:
.filter('smartsearch', function () {
return function (collection, keywords) {
if (!keywords) {
return collection;
} else {
keywords = keywords.split(" ");
_.each(keywords, function (word) {
collection = _.filter(collection, {$: word});
});
return collection;
}
}
每次都会返回一个空数组([]
),即使我知道我正在使用匹配的关键字
更新
感谢@gravityplanx指向我正确的方向,下面是工作解决方案:
.filter('smartsearch', ['$filter', function ($filter) {
return function (collection, keywords) {
if (!keywords) {
return collection;
} else {
keywords = keywords.split(" ");
$.each(keywords, function (k, v) {
collection = $filter('filter')(collection, {$: v});
});
return collection;
}
}
}]);
答案 0 :(得分:3)
当您想要使用Angular时,您正在使用下划线过滤器方法。
只需将_.filter(
更改为$filter(
。