2012-04-24 75 views
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()方法訪問單個子對象時,模型看起來是未定義的。

我只是不明白,請幫助我。

謝謝。

+0

被黑的例子在這裏工作:http://jsfiddle.net/jtbowden/dxFmP/1/ – 2012-04-24 18:36:42

回答

3

前看着你使用的樣例代碼,Model.get(1)將始終返回undefined。

$ .getJSON是一個AJAX調用,不一定立即返回(稱爲異步)。您需要使用您提供給$ .getJSON的回調來取消任何取決於Model.get(1)的邏輯,否則它將保持未定義狀態。

0

您試圖檢索對象的字段「142」。我想你只能從json得到「1」,「2」和「3」的id?如果我是正確的然後得到函數返回給你正確的答案,因爲沒有對象字段「142」存在。

+0

這是一個錯字。它應該說Model.get(1)。我以爲我有編輯... thx – xon1c 2012-04-24 18:35:41

2

$.getJSON是一個異步請求,你必須等待響應你叫Model.get()