Как перезагрузить 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()));                    
           });
Другие вопросы по тегам