1
我開始使用Ember.js,並且其中一個頁面有三級路由。這是路由器地圖的樣子:Ember.js中存在奇怪行爲的多個嵌套路由
App.Router.map(function(){
this.resource('tests');
this.resource('create', function() {
this.resource('create.questions', {path: ':test_id' }, function() {
this.resource('create.questions.question', {path: ':question_id'});
});
});
});
在我CreateRoute,我使用下面的代碼過渡到建立/問題的途徑:
this.get('controller').transitionToRoute('create/questions', test);
,工作正常,但在我CreateQuestionsRoute,這代碼不起作用:收到
this.get('controller').transitionToRoute('create/questions/question', question);
錯誤:
Uncaught Error: Assertion Failed: Error: Assertion Failed: The route create/questions/question was not found
使用Chrome的灰燼檢查插件,可以看我的路線被列出象這樣:
CreateRoute
CreateQuestionsRoute
CreateQuestions.QuestionRoute
這似乎是任意的行爲。關於如何處理多個嵌套路由沒有太多指導。有些引用告訴我,我的路線圖實際上應該是這樣的:
App.Router.map(function(){
this.resource('tests');
this.resource('create', function() {
this.resource('questions', {path: ':test_id' }, function() {
this.resource('question', {path: ':question_id'});
});
});
});
由此路線名稱將自動嵌套(無需點標記),但這並沒有工作。任何有着灰燼智慧的人都能爲我閃耀一些光芒嗎?
謝謝您的回答!不過,我想問問是否有辦法保留命名空間?如果我刪除點符號,我將不得不擁有一個QuestionController,稍後我可能需要在不同的父路徑下使用它。希望這是有道理的? –
我最終需要在單獨的父項下提供問題和疑問資源。我知道'創造'聽起來更像是一條路線,但Ember不允許在路線下築巢 –
是的,你可以完全做到這一點,我會避免點和去駱駝。 http://emberjs.jsbin.com/OxIDiVU/637/edit – Kingpin2k