Ember.js 余烬路由:是否可以嵌套在“动词”路由中,而不仅仅是一个“名词”?
我试图在相册的编辑页面上显示曲目列表 我的router.js.coffee如下所示: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
@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>