訪問嵌套的路線參數我有一個功能類似於一個嵌套少版本的本身就是一個嵌套的路線:從父路由/模板
/code/class/MyFile.java
/code/coverage/:coverageId/class/MyFile.java
有點不言自明,但coverage
路線裝飾的頁面與一些額外的突出顯示/細節不在「正常」版本中。
但是,我的code
模板定義了一個側欄,其中包含一個導航樹以訪問其他代碼文件。在查看/coverage/
頁面時,我希望側欄以不同方式顯示鏈接,確保在單擊時保持嵌套路線。
我的問題:
我似乎無法找到一種方法來訪問:coverageId
在code
路線或模板來修改顯示的聯繫方式。我的代碼路徑:
export default Ember.Route.extend({
model(params) {
console.log('Coverage ID: ' + params.coverageId);
...
打印undefined
。這似乎是有道理的,因爲它是一個孩子參數,這是「超出範圍」?
我的不正確的解決方案:
我在class
路線試過這樣:
export default Ember.Route.extend({
model(params) {
var parentModel = this.modelFor('code');
parentModel.coverageId = params.coverageId;
...
,在我code.hbs
模板:
{{#if model.coverageId}}
{{#link-to 'code.coverage.class' model.coverageId fileName}}{{fileName}}
{{/link-to}}
{{else}}
{{#link-to 'code.class' fileName}}{{fileName}}{{/link-to}}
{{/if}}
實際工作!在查看coverage
路線時,鏈接正確生成。
但是:雖然我可以用鼠標右鍵點擊這些鏈接,在一個單獨的標籤頁中打開他們成功,如果我只是經常點擊它們,我收到一個錯誤:
Error: Assertion Failed: You must use Ember.set() to set the `coverageId` property (of [object Object]) to `425988`
當然不過,我不能使用parentModel.set('coverageId', params.coverageId);
,因爲它失敗:
TypeError: parentModel.set is not a function
所以!我該如何(1)檢查父代(code
)路由中的嵌套路由參數,或者(2)是否將子路由中的已知值(:coverageId
)正確注入到父節點的?
謝謝 - 完美的作品。我*期待*類似的東西可用,但偶然發現了錯誤的文檔,這導致我相信沒有3-arg'set()'函數:http://emberjs.com/api/classes/ Ember.Object.html#method_set依然習慣於Ember文檔/類結構。 –