我有一个对象列表要显示在ngTable的表上。
我的对象看起来像:

obj {label:string,
     nestObj{nestLabel:string
            }
    }

在我的 Controller 中,我想允许对“标签”和“nestObject.label”字段进行排序和过滤。我已经试过了:
$scope.tableParams = new ngTableParams({
        page: 1,            // show first page
        count: 10,
        filter: {
            label='',
            nestObj.label=''
        },
        sorting: {
            label: 'asc',
            nestObj.label: 'asc'
        }
    }, {
        total: data.length, // length of data
        getData: function($defer, params) {
            // use build-in angular filter
            var filteredData = params.filter() ?
            $filter('filter')(data, params.filter()) :
            data;
            var orderedData = params.sorting() ?
                    $filter('orderBy')(filteredData, params.orderBy()) :
                    data;

            params.total(orderedData.length); // set total for recalc pagination
            $defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count()));
    }
});

但是我遇到一个错误,JavaScript编译器不喜欢nestObj.label上的过滤器:



如果我不对nestObj.label进行过滤和排序,则它会很好地工作。

是否可以使用ngTable对嵌套对象进行过滤和排序?

这是说明问题的plunker

谢谢你。

最佳答案

不幸的是,使用嵌套对象进行过滤和排序目前尚不适用于ng-table。从@ post读取此Kostia Mololkin和解决方案,我终于知道如何避免此错误,并且最终解决方案非常简单。非常感谢他!

我只是将数组重写为数据所在的位置:初始化了新属性,然后将嵌套对象中的数据设置为新属性,例如:

for (var i = 0; i < data.length; i++) {
  data[i].town = ""; //initialization of new property
  data[i].town = data[i].adresse.town;  //set the data from nested obj into new property
}

您可以在plunker上看到此解决方案,
现在它就像一种魅力...

10-06 04:34