【问题标题】:Ember Routing: Is it possible to nest inside a "verb" route, rather than just a "noun"?Ember 路由:是否可以嵌套在“动词”路由中,而不仅仅是“名词”?
【发布时间】:2014-10-27 21:09:39
【问题描述】:

我正在尝试在“专辑”的“编辑”页面上显示“曲目”列表。

我的 router.js.coffee 看起来像这样:

@resource 'albums', ->
  @resource 'album', path: '/:album_id', ->
    @route 'edit', ->
      @resource 'tracks'

如果我访问/albums/1/edit,“edit.handlebars”模板会正确显示。但是,如果我将{{outlet}} 标记放入该模板,它不会触发我的TracksRoute

查看 Ember 检查器,似乎正在使用 'albums.edit.index' 路由,而我的 'tracks' 路由嵌套在同一级别,而不是在其下方:

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

我想我希望TrackRouteAlbumEdit.IndexRoute 下方,但我会接受任何其他方式在父级的“编辑”页面上列出子模型记录(理想情况下,它们会列在这意味着我可以就地执行 CRUD 操作)

【问题讨论】:

    标签: ember.js


    【解决方案1】:

    为此,您需要在同一路由中使用多个控制器:

    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

    <div class="edit-form">
      {{!-- anything related to edit --}}
    </div>
    
    <div class="edit-tracks">
      {{render "tracks"}}
    </div>
    

    【讨论】:

    • 在这种情况下,我不能将 {{outlet}} 放入我的 edit.handlebars 模板中,它会显示 TrackRoute 对吗?这就是我想要的。
    • 从技术上讲,您可以添加verb,没有什么可以阻止您这样做。
    • 我想我可能遗漏了一些东西 :) 为了渲染路由的控制器/模板,它需要嵌套在父路由中,对吗?这意味着为了让edit.handlebars 中的 {{outlet}} 呈现 TrackRoute,TrackRoute 需要嵌套在 edit 内部 - 我正在这样做,但它不起作用:)
    • 这有点复杂,我将在今天晚些时候更新我的答案,在 javascript 中
    • 更新了我的答案@nikz
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-09
    • 1970-01-01
    • 2016-08-31
    • 1970-01-01
    • 2019-06-14
    • 2014-07-05
    • 2015-01-19
    相关资源
    最近更新 更多