Подтвердить что ты не робот

Как сделать обновление ресурса 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();

4b9b3361

Ответ 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);
        });
    };
}