2014-07-25 20 views
0

我已經看過AngularJS的各種形式重置示例,它們或多或少都會以同樣的方式結束 - 從原始數據。AngularJS Form復位/ angular.copy複製空對象,而不是預期的原始數據

但是......

當我做一個angular.copy,這是幾乎一樣,如果它與[]而不是預期的原始數據替換我的形式。

部分控制器:

//get my data 
$scope.phones = api.phones.query(); 

//"save" the original state 
$scope.original = $scope.phones 
console.log($scope.personalphones); //result: [$promise: Object, $resolved: false] 

$scope.reset() = function() { 
    angular.copy($scope.original, $scope.phones); 
    $scope.phones.form.$setPristine(); 
} 

任何幫助或想法,爲什麼這可能發生,將不勝感激。

+0

當你做'api.phones.query()'時你使用'$ resource'嗎? –

+0

是先生,blah.factory('api',[etc]){return $ resource('/ api/v1/phone /:id',{},{etc}} – RuanZ

回答

1

當您使用$resourcequery()方法時,它立即返回一個空數組。當服務器響應數據時,此空數組將填充服務器響應。類似的情況發生在$resource的實例方法中。因此你需要在複製數組之前等待服務器響應。該陣列上有一個$promise屬性,您可以使用它來執行此操作。

$scope.phones = api.phones.query(); 
$scope.phones.$promise.then(
    function(response) { angular.copy($scope.original, $scope.phones); } 
); 
相關問題