如何在POST,PUT或DELETE请求后更新AngularJS $资源?

时间:2012-11-26 04:55:30

标签: angularjs

在我的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();
    };
}

我的节点服务器正确接收数据,处理数据并进行一些更改,将其保存到我的数据库,然后通过JSON使用新更新的“项目”对象进行响应。在刷新页面之前,Angular不显示新对象。有没有办法让它显示新数据?我假设有一种更自动的Angular方法,而不是在$scope.project.save();之后手动调用另一个GET请求

1 个答案:

答案 0 :(得分:15)

看起来服务器响应作为回调到save的第一个参数返回,因此只要服务器使用完整对象数据进行响应,您应该能够用它来创建一个像这样的“新”Project对象:

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);
        });
    };
}