2015-01-24 2 views
0

2 개의 리소스가 있습니다. 프로젝트 및 해당 작업이 있습니다. 프로젝트를 업데이트해야 할 때 제목을 업데이트하거나 작업을 업데이트 할 수 있습니다.angularjs ngResource 엔티티 목록을 업데이트 한 다음 다른 엔티티 목록을 업데이트하십시오.

사용자가 작업을 만드는 경우 id를 가져 오려면 먼저 db에 저장해야합니다. 그런 다음 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 
     }) 

    } 

어떻게 이러한 순서를 구현할 수 있습니까?

답변

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