我该如何正确使用Ember.js嵌套路由?

时间:2012-09-11 20:52:15

标签: ember.js ember-old-router

我有这个路线部分/articles/。我想在这里创建子路由,例如//list/。这就是我的尝试:

articles: Ember.Route.extend({
    route: '/admin/articles',
    index: Ember.Route.extend({
        route: '/',
        connectOutlets: function (router, context) {
            "use strict";
            router.get('applicationController').connectOutlet('toolbar', 'articlesToolbar');
            router.get('applicationController').connectOutlet('main', 'articles');
        }
    }),
    list: Ember.Route.extend({
        route: '/list/',
        connectOutlets: function (router, context) {
            "use strict";
            router.get('applicationController').connectOutlet('toolbar', 'articlesToolbar');
            router.get('applicationController').connectOutlet('main', 'articles');
        }
    }),
    doLogout: function(router, context) {
        "use strict";
        router.transitionTo('login', context);
    }
}),

我必须做错事,因为它没有过渡到文章路线。这是我的路由日志:

STATEMANAGER: Sending event 'doSidebar' to state root.
STATEMANAGER: Entering null
STATEMANAGER: Entering root
STATEMANAGER: Entering root.articles
STATEMANAGER: Sending event 'doSidebar' to state root.
STATEMANAGER: Entering null
STATEMANAGER: Entering root
STATEMANAGER: Entering root.media

但是articles网址没有注册到历史记录中 - 如果我点击回来,我会转到之前的状态,即articles之前的状态。

我做错了什么?

2 个答案:

答案 0 :(得分:4)

您无法路由到非叶状态,因此无法转换为“文章” 将initialState: 'index'添加到您的文章路线或更改您的代码以转换为'articles.index'

articles: Ember.Route.extend({
  route: '/admin/articles',
  initialState: 'index',
  index: Ember.Route.extend({
    //

答案 1 :(得分:0)

您没有为/articles定义路线。您需要将route: '/admin/articles'更改为route: '/articles'