1

这是我的 JavaScript 代码:

var Model =
{
    get: function(id)
    {
        return this.data[id];
    },

    data: {},

    init: function()
    {   
        var self = this;

        $.getJSON(urlToServer, function(data)
        {
            $.each(data, function(i, object)
            {
                self.data[object.id] = object;
                console.log(object.id); // output is: 1, then 2, then 3
            });
        });
    }
};

Model.init();
console.log(Model); // output is the initialized object with children objects 1, 2, 3
console.log(Model.get(1)); // output is undefined

正如您从我在评论中输入的控制台输出中看到的那样,在最后一行代码之前一切正常。我定义了一个模型并使用服务器提供的一些 JSON 对象对其进行初始化。但是突然之间,当我尝试通过 get() 方法访问单个子对象时,模型似乎是未定义的。

我只是不明白,请帮助我。

谢谢。

4

3 回答 3

3

查看您使用的示例代码,Model.get(1) 将始终返回 undefined。

$.getJSON 是一个 AJAX 调用,不一定立即返回(称为异步)。您将需要使用您提供给 $.getJSON 的回调来触发取决于 Model.get(1) 的任何逻辑,否则它将保持未定义。

于 2012-04-24T18:38:19.213 回答
2

$.getJSON是异步请求,调用前必须等待响应Model.get()

于 2012-04-24T18:37:07.053 回答
0

您试图检索对象的字段“142”。我猜你只能从 json 中得到“1”、“2”和“3”的 id?如果我是对的,那么让函数返回给你正确的答案,因为不存在对象字段“142”。

于 2012-04-24T18:33:53.063 回答