2014-10-27 148 views
0

我試圖在「相冊」的「編輯」頁面上顯示「曲目」列表。Ember路由:是否可以嵌套在「動詞」路由中,而不是「名詞」?

我router.js.coffee看起來是這樣的:

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

如果我訪問/albums/1/edit,在 'edit.handlebars' 模板顯示正確。但是,如果我將{{outlet}}標籤放入該模板中,則不會觸發我的TracksRoute

展望灰燼檢查,它看起來像「albums.edit.index」路線正在被使用,和我的「軌道」的路線被嵌套在相同水平,而不是它下面:

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

我想我想要TrackRoute低於AlbumEdit.IndexRoute,但我會解決任何其他方式來列出父母的「編輯」頁面上的子模型記錄(理想情況下,他們會以一種方式列出我可以在原地進行CRUD操作)

回答

0

您需要在同一條路徑中使用多個控制器才能完成此操作:

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> 
+0

在這種情況下,我不能把一個{{口}}到我的'edit.handlebars'模板將顯示TrackRoute吧?這就是我想要的。 – nikz 2014-10-27 21:34:37

+0

在技術上,你可以放一個'動詞',沒有什麼能阻止你這樣做。 – Asgaroth 2014-10-27 21:41:27

+0

我想也許我失去了一些東西:)爲了路由的控制器/模板被渲染,它需要嵌套在父路由中,對嗎?這意味着爲了{edit}裏面的edit.handlebars渲染TrackRoute,TrackRoute需要嵌套在編輯內 - 我正在做,但它不工作:) – nikz 2014-10-28 09:17:01