Angular:使用工厂的异步AJAX数据更新范围

时间:2013-12-18 01:14:14

标签: ajax angularjs

建议的方法是什么?

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', {});
}

将参考范围变量传递给工厂是否可以?我一直认为工厂是提供数据。

第二种方法有什么问题(如果不太可接受的话)?

1 个答案:

答案 0 :(得分: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;
            });
        }
    }
});