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