13

在我的 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 不会显示新对象。有没有办法让它显示新数据?我假设有比手动调用另一个 GET 请求更自动的 Angular 方式来做到这一点$scope.project.save();

4

1 回答 1

15

看起来服务器响应作为回调的第一个参数返回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);
        });
    };
}
于 2012-11-27T02:05:59.890 回答