Итак, я использую NGTable для отображения данных на моей странице, данные хранятся в массиве и передаются через параметр набора данных, но когда я программно меняю значение данных в массиве, изменения отображаются правильно в таблице НО, когда я перейти на вторую страницу и снова перейти на первую страницу в таблице с отображением старых данных.
Вот JSFiddle, который иллюстрирует мою проблему: http://jsfiddle.net/vqxscmsu/
angular.module("uCloud", ["ngTable"])
.controller("myController", myController);
myController.$inject = ["NgTableParams", "$scope"];
function myController(NgTableParams, $scope) {
$scope.fsck = [{
name: "teste1",
description: "testando1"
}, {
name: "teste2",
description: "testando2"
}, {
name: "teste3",
description: "testando3"
}, {
name: "teste4",
description: "testando4"
}, {
name: "teste2",
description: "testando2"
}, {
name: "teste3",
description: "testando3"
}, {
name: "teste4",
description: "testando4"
}, {
name: "teste2",
description: "testando2"
}, {
name: "teste3",
description: "testando3"
}, {
name: "teste4",
description: "testando4"
}, {
name: "teste2",
description: "testando2"
}, {
name: "teste3",
description: "testando3"
}, {
name: "teste4",
description: "testando4"
}, {
name: "teste2",
description: "testando2"
}, {
name: "teste3",
description: "testando3"
}, {
name: "teste4",
description: "testando4"
}]
this.tableParams = {
TodoGeneral: null
};
this.tableParams['TodoGeneral'] = new NgTableParams({}, {
dataset: $scope.fsck,
});
$scope.test = function() {
$scope.fsck[0].name = "mais non";
}
}
@TanDuong Я попытался заменить на $ rootScope, но проблема все еще существует
Может, можно попробовать с sessionStorage?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


используйте getData вместо dataset в вашем экземпляре NgTableParams.
затем вы можете обновить свою таблицу через tableName.reload(), который вызывает метод getData.
Единственное, что здесь отличается, - это поведение при разбивке на страницы, которое вы, возможно, захотите перечитать в документации.
Вот рабочая рабочий пример: http://jsfiddle.net/vqxscmsu/17/
var demo = this;
// ...
demo.tableParams['TodoGeneral'] = new NgTableParams({}, {
getData: function(){
return $scope.fsck;
}
});
$scope.test = function() {
$scope.fsck[0].name = "mais non";
demo.tableParams.TodoGeneral.reload();
}
Мне пришлось добавить кое-что в функцию getData (), чтобы сортировка, фильтры и разбивка на страницы работали. Но теперь проблема решена с помощью этого решения, спасибо!
Да, я вспомнил, но точно не помнил, что делать!
Поскольку вы сохранили данные в
$scope,$scopeбудет повторно инициализирован с вашими данными инициализации в вашем контроллере. Если вы хотите изменить, вы можете сохранить в localStorage, Cookie или $ rootScope.