Ember.js 余烬路由:是否可以嵌套在“动词”路由中,而不仅仅是一个“名词”?

Ember.js 余烬路由:是否可以嵌套在“动词”路由中,而不仅仅是一个“名词”?,ember.js,Ember.js,我试图在相册的编辑页面上显示曲目列表 我的router.js.coffee如下所示: @resource 'albums', -> @resource 'album', path: '/:album_id', -> @route 'edit', -> @resource 'tracks' 如果我访问/albums/1/edit,则“edit.Handlebar”模板将正确显示。但是,如果我将{{outlet}}标记放入该模板中,它不会触发我的Track

我试图在相册的编辑页面上显示曲目列表

我的router.js.coffee如下所示:

@resource 'albums', ->
  @resource 'album', path: '/:album_id', ->
    @route 'edit', ->
      @resource 'tracks'
如果我访问/albums/1/edit,则“edit.Handlebar”模板将正确显示。但是,如果我将{{outlet}}标记放入该模板中,它不会触发我的TracksRoute

在Ember inspector中查看,它看起来像是正在使用“albums.edit.index”路由,而我的“tracks”路由嵌套在与该路由相同的级别上,而不是在它下面:

albums (AlbumsRoute)
 |
 |
 |-> album (AlbumRoute)
      |
      |
      |-> album.edit (AlbumEditRoute)
           |
           |
           |-> tracks (TrackRoute)
           |
           |
           |-> album.edit.index (AlbumEdit.IndexRoute)

我想我想要AlbumEdit.IndexRoute下面的TrackRoute,但我会满足于在父级的编辑页面上列出子模型记录的任何其他方式,理想情况下,它们的列出方式将意味着我可以在适当的位置执行CRUD操作

您需要在同一路径中使用多个控制器来执行此操作:

Router.map(function() {
  this.resource('albums', function() {
    this.resource('album', {path: '/:album_id'}, function() {
      this.route('edit');
    });
  });
});

App.AlbumEditRoute = Em.Route.extend({
  setupController: function(editController, model) {
    var tracksController = this.controllerFor('tracks');

    this._super(editController, model);
    tracksController.set('model', model.get('tracks'));
  }
});
在模板中:album/edit/index.hbs


在这种情况下,我无法将{{outlet}}放入我的edit.handlebar模板中,该模板将正确显示轨迹路线?这就是我想要的。从技术上讲,你可以使用动词,但没有什么可以阻止你这么做。我想我可能遗漏了什么:为了渲染路由的控制器/模板,它需要嵌套在父路由中,对吗?这意味着为了让{{outlet}}inside edit.handlebar呈现轨迹路径,轨迹路径需要嵌套在edit中-我正在这样做,但它不起作用:这有点复杂,我将在今天晚些时候更新我的答案,在javascriptUpdated my answer@nikz中
<div class="edit-form">
  {{!-- anything related to edit --}}
</div>

<div class="edit-tracks">
  {{render "tracks"}}
</div>