AngularJS $ http.get返回的速度不够快

时间:2015-09-03 18:17:29

标签: angularjs http

{{1}}

所以我的问题是,$ http.get在工厂执行完毕之前没有完成响应...我应该如何解决这个问题?我在某处读到了我可以实现app.config以将变量注入提供者......这可能是一个解决方案吗?

2 个答案:

答案 0 :(得分:1)

您的工厂/服务应该是维护数据的内容,控制器应该只使用它(这样可以在不同的控制器之间进行双向绑定)。

.factory('someFac', function ($http) {
    var self = this;
    self.init = function() {
        return $http.get('url').then(function(response) {
            self.data = response.data;
        });
    }
}

现在您的工厂可以注入任何地方并维护数据,因此您的所有控制器都将实时更新。要确保加载数据,请确保将init放入路径中的解析中。

resolve: {
    someFac: function (someFac) {
        return someFac.init();
    }
}

现在在控制器中你可以这样使用它:

.controller('someControleler', function ($scope, someFac) {
    $scope.data = someFac.data;
});

希望这有帮助。

答案 1 :(得分:0)

通常工厂只会通过调用带有$ http的方法返回承诺,然后调用工厂的代码将处理" .then"当承诺得到履行时。

.factory('someFac', function (CONFIG, $injector, $http) {
    var fact = {}

    fact.getResponse = function (){

      return $http.get('url');

    }

   return fact;
 }