这是我的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
正如您从控制台输出中看到的那样,我在评论中看到,一切正常,直到最后一行代码。我定义了一个Model并使用服务器提供的一些JSON对象对其进行初始化。但突然间,当我尝试通过get()方法访问单个子对象时,模型似乎未定义。
我只是不明白,请帮助我。
感谢。
答案 0 :(得分:3)
查看您使用的示例代码,Model.get(1)将始终返回undefined。
$。getJSON是一个不一定立即返回的AJAX调用(称为异步)。您将需要使用您提供给$ .getJSON的回调来触发任何逻辑,具体取决于Model.get(1),否则它将保持未定义。
答案 1 :(得分:2)
$.getJSON
是异步请求,您必须等待响应才能调用Model.get()
答案 2 :(得分:0)
您尝试检索对象的字段“142”。我猜你从json只得到“1”,“2”和“3”id?如果我是对的,那么函数会返回正确的答案,因为没有对象字段“142”。