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

我从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中,我使用以下代码转换到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。