我有一个对象列表要显示在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上看到此解决方案,
现在它就像一种魅力...