I have a list of objects to display on a table with ngTable. My object looks like :
obj {label:string,
nestObj{nestLabel:string
}
}
In my controller I want to allow sorting and filtering on fields 'label' and 'nestObject.label'. I have tried this:
$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()));
}
});
But I m getting an error, the javascript compiler doesn't like the filter on nestObj.label :
Uncaugth syntexError : unexpected token .
IT works well if I don't filter and sort on nestObj.label.
Is it possible to filter and sort on nested object with ngTable?
Here is the plunker that illustrate the problem.
Thank you.
Unfortunately, the filtering and sorting with nested objects is not suitable in ng-table for now. Reading this post and solution from @Kostia Mololkin, I finally got it how to avoid this bug and the solution is in the end very simple. Big thanks to him!
I just rewrote the array where is your data: initialized the new property and set the data from nested object into the new property like:
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
}
You can see this solution here on plunker, now it's working like a charm...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With