javascript - 工厂中的 AngularJS $http 请求

标签 javascript json angularjs factory

我想将一个 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/

相关文章:

javascript - 无法将模块和 Controller 文件连接到index.html

node.js - npm start 如何在 8000 端口上运行服务器

Javascript 函数调用需要唯一的名称

javascript - 如何通过循环计算 jquery 中的元素来生成代码

python - Golang - 检测 JSON 输入中的重复键

jQuery UI 对话框和 Ajax POST、JSON

ios - 使用 Alamofire、ImageLoader 在 swift 中解析 Json 来解析键值以及具有图像的 TableView 中的对象

javascript - ion-header-bar 无法与侧菜单和幻灯片一起使用

javascript - gremlin javascript 中的 gremlin 查询相当于什么?

javascript - Javascript 中的复选框