AngularJS过滤器:智能搜索

时间:2016-02-19 14:34:58

标签: javascript angularjs

我正在尝试使用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;
            }
        }
    }]);

1 个答案:

答案 0 :(得分:3)

当您想要使用Angular时,您正在使用下划线过滤器方法。

只需将_.filter(更改为$filter(