2012-06-03 121 views
1

從JSON ajax數據源創建Ember對象時遇到問題。如果我使用手動方式創建對象,則它完美地工作,並且視圖得到更新。但是,如果數據本身來自JSON ajax數據調用,則不起作用。如果我檢查結果對象,則Ember模型對象不會獲得正確的getter和setter屬性。有誰知道爲什麼發生這種情況?無法從JSON創建Ember對象

App.AlbumView = Ember.View.extend({ 
    templateName:'album', 
    albums:[], 
    getAll:function() { 
     var self = this; 

     //This works! 
     self.albums.push(App.Album.create({title: 'test', artist: 'test'})); 

     $.post('/Rest/list/album',null,function(data) { 
      $.each(data, function (index, item) { 

       //This does not work?!? 
       self.albums.push(App.Album.create(item)); 
      }); 
     }, 'json'); 
    } 
}); 
+0

請對項目做出警報,看看輸出是什麼。警報(項目); –

+0

是否有任何理由您使用POST請求而不是GET來從服務器獲取數據 –

+0

您可以將JSfiddle放在至少可以工作的位上,這樣我就可以捅一下了嗎?我很感興趣,但對其他設置知之甚少,無法完全理解問題。 –

回答

2

訪問視圖的實例變量時,你應該總是使用餘燼get('variableName')set('variableName', newValue)方法。奇怪的事情往往會發生,如果你不這樣做。

+0

視圖不執行get和set。當我嘗試給他們打電話時,我得到'沒有這樣的功能'的錯誤。 –

+0

視圖實現get和set,因爲這些方法是在Ember.Observable中定義的,Ember.View通過Ember.Object進行擴展(通過Ember.Object)。例如:http://jsfiddle.net/zentralmaschine/uh74U/1/ – zentralmaschine

+0

我明白了。奇怪。好吧,當我將集合移動到全局可訪問的ArrayController時,它似乎工作,我猜get和set的使用會產生變化。所以我接受了答案。然後,我將嘗試單獨調試視圖問題。 –