2014-12-04 24 views
1

保持活動狀態的鏈接的資源與固定ID下面的路由器定義基於使用currentWhen

App.Router.map(function() { 
    this.resource('songs', function() { 
    this.resource('song', { path: ':song_id' }); 
    }); 
}); 

我有一個固定的ID的主導航鏈接到一個嵌套的資源:

link-to 'First Song' 'song' 1 currentWhen='song' 

songs模板還呈現到song資源的導航鏈接,並且包括最終song模板的outlet

我的目標是使默認song模板,歌曲1單擊主導航鏈接後,但保持這種導航鏈接活躍在出口呈現的任何其它歌曲:example in jsbin

上面顯示的鏈接助手上的currentWhen選項只保留資源1活動的鏈接,但不保留其他song資源的鏈接。當使用父資源songs作爲currentWhen參數時,它永遠不會有效。

這是一個錯誤還是我誤解了一些東西?

我認爲使用父資源作爲currentWhen的參數會保持所有嵌套資源的鏈接處於活動狀態,但事實並非如此。

我也嘗試了另一種解決方案,其中主導航鏈接指向songs路線,該路線在'activate'-hook中使用​​,但這僅在第一次鏈接被點擊時起作用。

我使用ember.js 1.7.0

回答

0

更改鏈接歌曲如下:

<li>{{link-to 'Songs' 'songs' currentWhen='song'}}</li> 

然後,定義一個SongsIndexRoute將重定向到第一首歌曲如下:

App.SongsIndexRoute = Ember.Route.extend({ 
    redirect: function(model, transition){ 
    return this.transitionTo('song', 'first'); 
    } 
}); 

檢查出來here