嵌套对象内的智能表st-search

时间:2016-03-28 20:42:03

标签: angularjs smart-table

有没有办法搜索智能表中的嵌套元素?我使用REST Api中的数据提供表格,该数据由以下格式组成:

{
    "id": 1,
    "small_name": "Foo",
    "large_name": "Bar Foo",
    "variants": [{"value": "0"}, {"value": "1"}]
}

我想要实现的是通过value内对象的variants属性过滤数据的可能性。

2 个答案:

答案 0 :(得分:1)

从Smart Table文档:

" stSetFilter替换搜索智能表时使用的过滤器。当stSearch的默认行为不符合您的要求时,例如在一个条目是另一个条目是另一个条目的子串的情况下,使用自定义过滤器来实现您的目标。" http://lorenzofox3.github.io/smart-table-website/

该网站还有一个例子。

答案 1 :(得分:0)

我会为我的问题发布解决方案,也许它可以帮助某人。

angular.module('YourModule').filter('CustomFilter', [
    '$parse',
    function ($parse) {
        return function(items, filters) {
            console.log(items, filters);

            var itemsLeft = items.slice();

            Object.keys(filters).forEach(function (model) {
                var value = filters[model],
                    getter = $parse(model);

                itemsLeft = itemsLeft.filter(function (item) {
                    if (model === 'value') {
                        var variants = item.variants.filter(function (variant) {
                           return getter(variant).match(value);
                        });

                        return variants.length;
                    } else {
                        return getter(item).match(value);
                    }
                });
            });

            return itemsLeft;
        }
    }
])