angularjs ngResource更新实体列表,然后更新另一个实体

时间:2015-01-24 09:19:02

标签: angularjs node.js ngresource

我有2个资源:项目及其任务。 当使用需要更新项目时,他们可能会更新标题,或者他们可以更新其任务。

如果用户创建任务,则需要首先将其保存到数据库以获取ID,然后我可以将id分配给项目的tasks属性。

因此,在保存所有任务后需要保存项目。

    $scope.update = function() {

        //each taskTemplate can be updated concurrently, or at the same time. they do not need to updated one by one
        for (var taskTemplates in $scope.taskTemplates) {
            //i need to update all the tasks, and then I can update the project
        }

        //this needs to be update after all the taskTemplates are updated
        $scope.projectTemplate.$update(function() {
            $location.path('projectTemplate/' + $scope.projectTemplate._id)
        }, function(errResponse) {
            $scope.error = errorResponse.data.message
        })

    }

如何实施此类订购?

1 个答案:

答案 0 :(得分:0)

将任务承诺与all()合并,并使用all(...).then(...)保存项目。详情:

$scope.update = function() {
    var promises = [];
    for (var taskTemplates in $scope.taskTemplates) {
        promises.push(taskResource.save(taskTemplates).$promise);
    }
    $q.all(promises).then(function() {
        return projectResource.save(currentProject).$promise;
    });
}