2013-12-18 22 views
1

建議的方式是什麼?Angular:使用來自工廠的異步AJAX數據更新範圍

1.

factory.updater = function(varObjToBeUpdated){ 
    $http.post('/url', {}) 
    .success(function(data){ 
     for (data_field in data) 
      varObjToBeUpdated[data_field] = data[data_field]; 
    }); 
} 

... 

myFactory.updater($scope.varObjToBeUpdated); 

或者2,

myFactory.updater().success(function(data, ..){ 
    $scope.varObjToBeUpdated = data; 
}); 

... 

factory.updater = function(){ 
    return $http.post('/url', {}); 
} 

是否確定一個參考範圍變量傳遞給一個工廠?我一直認爲工廠爲提供了數據。

第二種方法(如果它不太可接受)有什麼問題?

+0

你有什麼問題? –

+0

對不起,我認爲這個問題現在更清楚了。 – xcorat

回答

3

我更喜歡第二種方法,因爲這樣可以讓您在跨多個控制器需要時插入服務。使用.then繼續承諾模式:

myFactory.updater().then(function(data, ..){ 
    $scope.varObjToBeUpdated = data; 
}); 

app.factory('myFactor', function($http) { 
    return { 
     updater: function() { 
      return $http({'/url',}).then(function(result) { 
       return result.data; 
      }); 
     } 
    } 
});