2
我想过滤结果ng-repeat
,但具有“智能搜索”功能,即。使用多个关键字进行搜索。该集合是一个复杂的对象数组,包含对象。AngularJS过滤器:智能搜索
根据Angular Docs: $filter,你可以使用{$: "keyword"}
与过滤功能deepfilter,但我还没有得到它的工作。
段:
.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;
}
}
它似乎返回一个空数组([]
)每一次,尽管我知道我使用的是匹配的关键字
UPDATE
得到它的工作感谢@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;
}
}
}]);
获取'$ filter is not defined' now –
[this](http://stackoverflow.com/questions/16706583/angularjs-filter-is-undefined-when-trying-to-get-filtered-data)is可能的罪魁祸首,但诊断一个'未定义'错误而无法访问代码库是徒劳无益的。 – gravityplanx
是的,的确,这是问题所在,你的回答引发了我的问题以及如何纠正它,我将编辑我的OP并将工作代码放在那里。感谢您的帮助 –