Ember.js中的多个嵌套路由具有奇怪的行为
我从Ember.js开始,其中一个页面有一个三级路径。这是路由器地图的外观:Ember.js中的多个嵌套路由具有奇怪的行为,ember.js,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.quest
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中,我使用以下代码转换到create/questions路线:
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 Ember inspector插件,我可以看到如下列出的路线:
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'});
});
});
});
路由名称将自动嵌套(不需要点符号),但这不起作用。有没有人能用余烬智慧为我点亮一盏灯?用这个:
App.Router.map(function(){
this.resource('tests');
this.resource('create', function() {
this.resource('questions', {path: ':test_id' }, function() {
this.resource('question', {path: ':question_id'});
});
});
});
添加命名空间资源的唯一原因是该资源不是唯一的。也就是说从任何你可以使用的路线
this.transitionTo('questions', model);
this.transitionTo('question', modelForQuestions, modelForQuestion);
例如:
如果您想保留名称空间,我将使用camelCase而不是点表示法,因为通常点表示当前作用域上的属性
示例:谢谢您的回答!但是,我想问,是否有办法保留名称空间?如果我删除点符号,我将必须有一个QuestionController,稍后可能需要在不同的父路由下使用它。希望这是有意义的?我最终需要一个单独的家长来管理问题和提问资源。我知道“创建”听起来更像是一条路线,但Ember不允许在路线下筑巢是的,你完全可以做到,我会避开dot,去camelCase。