假設您在Ember應用程序中有以下路線。如何鏈接到Ember.js中的嵌套資源?
App.Router.map(function() {
this.resource('series', function() {
this.resource('serie', { path: '/:serie_id' }, function() {
this.resource('seasons', function() {
this.resource('season', { path: '/:season_id' }, function() {
this.resource('episodes', function() {
this.resource('episode', { path: '/:episode_id' });
})
});
});
});
});
});
我將如何鏈接到使用linkTo
幫手把手提供特定插曲?換句話說,如何灰燼找出網址的其他參數應該是什麼,也就是serie_id
和episode_id
?該文件聲明我應該將episode
型號傳遞給episode
路線,如下所示。
{{#linkTo "episode" episode}}
這是鏈接到以下URL結構。
/series/:serie_id/seasons/:season_id/episodes/:episode_id/
當我使用linkTo
助手這樣,灰燼拋出一個錯誤告訴我,它不能undefined
叫get
與id
。我認爲它使用的episode
模型找出了serie_id
和episode_id
是我的猜測是,該模型需要順應了灰燼找到這些id
個具體約定(結構或藍圖)。
這是我覺得最困難的有關灰燼方面。即使在調試模式下使用Ember,它也不是非常透明。任何指針或引用非常感謝。
更新1:一些挖後,我發現該路由的serialize
方法是實現這一關鍵要素。但是,如上圖所示,當我使用linkTo
幫助程序時,由於某種原因,傳遞給路線的serialize
方法的模型爲undefined
(即使傳遞給幫助程序linkTo
時不是這樣)。導致此發現的問題可以找到here。
更新2:原來,該serieSeason
路線的serialize
方法接收了錯誤的模型,一個小插曲,而不是一個賽季,當生成的鏈接目前還不清楚,但是,爲什麼它是在不正確的。模型。在什麼地方serialize
方法的model
參數從何而來?
更新3:linkTo
幫助程序工作正常,如果我從每個涉及的路線的serialize
方法返回靜態數據,這意味着linkTo
幫助程序不涉及該問題。
http://emberjs.com/api/classes/Ember.Handlebars.helpers.html#toc_supplying-multiple-models 也許這是不存在的,你問這個問題的時候...... –
只用了幾天XP – ahnbizcad
@LucasPottersky現在也不是! – StevenNunez