我想将一个 JSON 文件加载到一个工厂中,然后返回它的值。
代码如下:
angular.module('getGuilds', [])
.factory('getGuilds', getGuilds);
getGuilds.$inject = ['$http'];
function getGuilds($http){
var obj = {content:null};
$http.get('guild/guilds.json').success(function(data) {
obj.content = data;
});
return obj;
}
问题是它只返回值为 null 的对象,所以看起来 $http.get 并没有改变 obj.content.
之后我做了一个小测试:
$http.get('guild/guilds.json').success(function(data) {
obj.content = data;
});
console.log(obj)
return obj;
}
它返回了 JSON 数组中的这个对象:{content:null}。
然后我将 console.log 放入 $http.get 请求中。
$http.get('guild/guilds.json').success(function(data) {
obj.content = data;
console.log(obj)
});
猜猜看,它注销了 JSON 文件。有人愿意帮助我吗?
最佳答案
$http.get 异步执行获取。源中成功 block 之后出现的代码在成功 block 中的代码之前运行。所以它的行为正如预期的那样:在您的第一次尝试中,您正在记录一个未完成请求的结果。
关于javascript - 工厂中的 AngularJS $http 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28680604/