Как сделать обновление ресурса AngularJS $после запроса POST, PUT или DELETE?
В моем приложении Angular я настроил "проект" как $resource
. В моем контроллере я запрашиваю сервер для данных по запросу GET сразу же при загрузке страницы. Я могу редактировать информацию в своем браузере, используя Angular двустороннюю привязку данных, а затем я могу сохранить данные обратно на сервер через запрос POST, например:
(отредактированный/упрощенный для краткости)
function ProjectCtrl($scope, $routeParams, Project) {
$scope.project = Project.get({id: $routeParams.projectId},
function(data) { //Successfully received data },
function(data) { //Failed to receive data },
);
$scope.saveProject = function() {
$scope.project.save();
};
}
Мой сервер Node правильно получает данные, обрабатывает их и вносит некоторые изменения, сохраняет их в моей базе данных и затем отвечает обновленным "проектным" объектом через JSON. Angular не отображает новый объект, пока я не обновляю страницу. Есть ли способ сделать это отображением новых данных? Я предполагаю, что существует более автоматический способ Angular, чем вручную вызвать другой запрос GET после $scope.project.save();
Ответы
Ответ 1
Похоже, что ответ сервера возвращается в качестве первого аргумента для обратного вызова на save
, поэтому, пока сервер отвечает полными объектными данными, вы должны использовать его для создания "нового" проекта объект вроде этого:
function ProjectCtrl($scope, $routeParams, Project) {
$scope.project = Project.get({id: $routeParams.projectId},
function(data) { /* Successfully received data */ },
function(data) { /* Failed to receive data */ },
);
$scope.saveProject = function() {
$scope.project.save(function(data) {
$scope.project = new Project(data);
});
};
}