Javascript js Ember data render double嵌套有许多关系

Javascript js Ember data render double嵌套有许多关系,javascript,rest,ember.js,ember-data,has-many,Javascript,Rest,Ember.js,Ember Data,Has Many,我试图建立一个小应用程序使用余烬数据,我试图通过它的专辑呈现艺术家的所有歌曲 我的模型看起来像: App.Artist = DS.Model.extend({ name: DS.attr('string'), albums: DS.hasMany('album', {async:true}) }); App.Song = DS.Model.extend({ title: DS.attr('string'), artist: DS.belongsTo('App.Artist'),

我试图建立一个小应用程序使用余烬数据,我试图通过它的专辑呈现艺术家的所有歌曲

我的模型看起来像:

App.Artist = DS.Model.extend({
  name: DS.attr('string'),
  albums: DS.hasMany('album', {async:true})
});

App.Song = DS.Model.extend({
  title: DS.attr('string'),
  artist: DS.belongsTo('App.Artist'),
  album: DS.belongsTo('App.Album')
});

App.Album = DS.Model.extend({
  title: DS.attr('string'),
  cover_url: DS.attr('string'),
  artist: DS.belongsTo('artist'),
  songs: DS.hasMany('song', {async:true})
});
在模板中,我尝试将其呈现为:

<script type='text/x-handlebars', data-template-name='artists'>
  {{#each artist in model}} 
    {{#linkTo 'artist' artist}}{{artist.name}}({{artist.albums.length}}){{/linkTo}}
   {{/each}}
   {{outlet}}
</script>

<script type='text/x-handlebars', data-template-name='albums'>
      {{#each album in albums}}
        <h3>{{album.title}}</h3>
        {{#each song in album.songs}}
          {{song.title}}
        {{/each}}
      {{/each}}
</script>
专辑中的歌曲没有被解析的原因是什么


感谢您的帮助。

除非您有特殊的序列化程序或旧版本的余烬数据,否则您的json是错误的

{
  songs: [
  {
   id: 8
   artist_id: 1,
   album_id: 5,
   title: "title"
  }
 ]
}
应该是

{
  songs: [
  {
   id: 8
   artist: 1,
   album: 5,
   title: "title"
  }
 ]
}

问题是我错误地指定了歌曲上的关系:

App.Song = DS.Model.extend({
  title: DS.attr('string'),
  artist: DS.belongsTo('App.Artist'),
  album: DS.belongsTo('App.Album')
});
变成:

App.Song = DS.Model.extend({
  title: DS.attr('string'),
  artist: DS.belongsTo('artist'),
  album: DS.belongsTo('album')
});

谢谢你的回答。我试图将其更改为您的格式,但无法解决问题。此文档是否过时?更改为您的格式修复了我以前遇到的一些问题,如album.artist.title以前不起作用,但它无法修复歌曲的问题。
App.Song = DS.Model.extend({
  title: DS.attr('string'),
  artist: DS.belongsTo('artist'),
  album: DS.belongsTo('album')
});