2013-02-12 51 views
1

我试图用夹具实现最小emberJs应用程序,两款车型之间的一个一对多的关系:emberjs的hasMany返回undefined

App.store = DS.Store.create({ 
    revision: 11, 
    adapter: 'DS.FixtureAdapter' 
}); 

App.Album = DS.Model.extend({ 
    Name: DS.attr("string"), 
    Songs: DS.hasMany('App.Song') 
}); 

App.Song = DS.Model.extend({ 
    Name: DS.attr("string"), 
    Album: DS.belongsTo('App.Album') 
}); 

App.Album.FIXTURES = [ 
    { 
    id: 1, 
    Name: 'foo' 
    }, 
    { 
    id: 2, 
    Name: 'bar' 
    } 
]; 

App.Song.FIXTURES = [ 
    { 
    id: 1, 
    Album_id: 1, 
    Name: "asdf" 
    }, 
    { 
    id: 2, 
    Album_id: 2, 
    Name: "Test" 
    } 
]; 

我可以通过控制台访问相册样板这样 App.Album.find(1)获得( '名称')#=> FOO

每当我尝试访问该歌曲属性槽专辑和歌曲之间的关系得到了一个未定义:

App.Album.find(1).get('Songs').objectAt(0) # undefined 

提示我可能在这里做错了什么?

回答

2

您还没有定义哪个Song s和Album具有。您需要在您的Album模型中指定Songs: [1,2,3]

(很肯定这是Songs,但它可能Song_ids。)

+0

非常感谢,认为没有的伎俩! – Flo 2013-02-12 22:56:50

+1

不用担心。是“歌曲”吗? – Wildhoney 2013-02-13 01:06:49

+3

是的,这是'歌曲' – Flo 2013-02-13 21:13:13