Как перезагрузить ngTable с успешным постом
Я нашел похожие посты на эту тему, но они включают ngTable нумерацию страниц. У меня отключена эта функция, и я не могу обновить таблицу после успешной публикации. tableParams.reload ничего не делает. Я также не понимаю, почему данные не обновляются при включении. Разве Angular не должен обновлять представление при изменении модели?
// Table
$scope.tableParams = new ngTableParams({
page: 1, // show first page
count: 100, // count per page
sorting: {
foo: 'asc' // initial sorting
}
}, {
counts: [], // length of data
getData: function ($defer, params) {
$http.get('/api/apiMasterItem/')
.success(function (data, status) {
var orderedData = params.sorting() ? $filter('orderBy')(data, params.orderBy()) : data;
$defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count()));
});
}
});
$scope.editId = -1;
$scope.setEditId = function (pid) {
$scope.editId = pid;
}
//Post MasterItem
$scope.addMasterItem = function () {
var newMasterItem = $scope.newMasterItem
MasterItemPost.post(newMasterItem)
.success(function () {
notification.success();
}).error(function () {
notification.error();
})
console.log(newMasterItem);
$scope.tableParams.reload();
$scope.newMasterItem.MLItemCode = '',
$scope.newMasterItem.MLItemDescription = '',
$scope.newMasterItem.MLItemUOM = '',
$scope.newMasterItem.MLItemPrice = ''
};
1 ответ
Решение
Вы должны обновить total
свойство, после получения данных, независимо от использования нумерации страниц или нет
контроллер
...
getData: function ($defer, params) {
$http.get('/api/apiMasterItem/')
.success(function (data, status) {
var orderedData = params.sorting() ? $filter('orderBy')(data, params.orderBy()) : data;
// update table params
params.total(data.length);
$defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count()));
});