2013-11-27 9 views
2

我需要從for/while循環的列表中保存規範項目(specitems),但它們必須一個接一個地發生,如下面的代碼所示。在我的代碼中,首先保存規範類獲取其id(cid),然後開始保存屬於規範類的規範項目。下面的代碼工作正常,但它僅適用於有限次數的迭代。如果不關心下一個保存會發生在另一個spring-neo4j後端做了一些奇怪的事情,即保存specitems作爲節點,但不保存它們與specclass的關係。顯然有些東西在那裏也是錯的!?角度資源一個接一個地保存在for/while循環中

if ($scope.specitems[0]){ 
    $scope.specitems[0].specClass = cid; 
    spClass = new SpecItemService($scope.specitems[0]); 
    $scope.specitems.splice(0, 1); 
    spClass.$save(function(data) { 
     if ($scope.specitems[0]){ 
      $scope.specitems[0].specClass = cid; 
      spClass = new SpecItemService($scope.specitems[0]); 
      $scope.specitems.splice(0, 1); 
      spClass.$save(function(data) { 
       $log.warn("Saved: "+data.name); 
       if ($scope.specitems[0]){ 
        $scope.specitems[0].specClass = cid; 
        spClass = new SpecItemService($scope.specitems[0]); 
        $scope.specitems.splice(0, 1); 
        spClass.$save(function(data) { 
         $log.warn("Saved: "+data.name); 
         if ($scope.specitems[0]){ 
          $scope.specitems[0].specClass = cid; 
          spClass = new SpecItemService($scope.specitems[0]); 
          $scope.specitems.splice(0, 1); 
          spClass.$save(function(data) { 
           $log.warn("Saved: "+data.name); 
          });      
         }; 
        });      
       }; 
      });      
     }; 
    });      
}; 
+0

哦,也許遞歸? –

回答

2

你可以創建一些方法和一次並再次(通過遞歸的方式)從$save回調調用它。

喜歡的東西:

$scope.loop = function(){ 
if ($scope.specitems[0]){ 
    spClass.$save(function(data) { 
     //.... 
     $scope.loop(); 
}); 
}  
} 
+0

它像一個魅力。非常感謝。 – pv1