javascript - AngularJS:在 $http get 之后从对象检索数组

标签 javascript angularjs ajax

抱歉,我是 Angular 新手。这可能是转储问题。 我在 json 中有以下数据结构:

[
    {"id": "1", "name": "Alan", "location": "US"}, 
    {"id": "2", "name": "Bella", "location": "UK"}
]

我有以下服务:

    let users = getData();

    function getUsers() {
        return users;
    }
    function getData() {
        return $http
            .get("./data/users.json")
            .then(function(response) {
                return response.data;
            });
    }
    function addUser(user) {
        let id = users.$$state.value[users.$$state.value.length - 1].id++;
        users.$$state.value.push({
              // adding user
        })
    }

我从$http.get获取一些非常不方便的对象。如何将其恢复为数组表示形式?

最佳答案

这里的问题是缺乏对如何promises的理解工作,你的$http调用并不返回响应,而是对该异步请求的 promise 。当您有异步任务并且需要订阅其解析的回调时,Promise 正是用于这种情况。

无论如何,您必须订阅成功主题的回调,而不是尝试直接使用返回的 Promise,该回调在 Promise 中由 then(fn) 方法给出,并向您的变量提供从 $http.get().then ...$ 上的链式 Promise 返回的数据。

例如:

let users = [];

getData()
    .then(function (data) {
        users = data;
    });

function getUsers() {
    return users;
}

function getData() {
    return $http
        .get("./data/users.json")
        .then(function(response) {
            return response.data;
        });
}

function addUser(user) {
    let id = users.$$state.value[users.$$state.value.length - 1].id++;
    users.$$state.value.push({
          // adding user
    })
}

关于javascript - AngularJS:在 $http get 之后从对象检索数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40862854/

相关文章:

html - 谁能解释为什么 Facebook 似乎在 HTML 评论中 Conceal 了 HTML 代码?

javascript - Ajax 只被调用一次

javascript - 在ajax回调函数javascript中乱序执行

Ms CRM 中的 Javascript(带有 odata 查询)无法正常工作?

javascript - 使用 karma 测试 angularjs 时初始化 Controller 时出错

javascript - Photoswipe 4.0 : Initiate 'swipe to next' programatically

javascript - 链接 Angular promise 拒绝

javascript - Angular .js : Add a class to elements outside of the scope depending on the used route

javascript - 动态改变特定div的颜色

javascript - 如何检查 Canvas 是否为空白?