2012-06-03 93 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的使用会产生变化。所以我接受了答案。然后,我将尝试单独调试视图问题。 –