【问题标题】:How to add route or state to Ember.Router on runtime?如何在运行时向 Ember.Router 添加路由或状态?
【发布时间】:2012-06-07 11:01:36
【问题描述】:

我的应用程序上有以下 Ember.Router:

App.Router = Ember.Router.extend({
    location: 'hash',
    rootElement: '#content',
    enableLogging: true,

    root: Ember.State.extend({
        route: '/',

        index: Ember.State.extend({
            route: '/',
            redirectsTo: 'main.welcome'
        }),

        main: Ember.State.extend({
            route: '/main',

            welcome: Ember.ViewState.extend({
                route: '/welcome',
                view: App.WelcomeView
            })
        })
    })
});

我想要做的是通过在声明后添加到 App.Router 来添加额外的路由(这是为了启用任意模块)。是在 App.initialize() 之前还是之后完成并不重要。

这是一个关于模块路由对象的示例:

Module.routes = Ember.State.extend({
    route: '/module',
    index: Ember.State.extend({
        route: '/'
        view: Module.IndexView
    })
});

非常感谢您对此事的任何帮助。

【问题讨论】:

    标签: javascript ember.js router ember-old-router


    【解决方案1】:

    您可以提取您想要丰富的状态,以便稍后重新打开它。

    App = Ember.Application.create();
    
    App.RootState = Em.State.extend({
        index : Em.State.extend({
            route : '/'
        }),
        main: Em.State.extend({
            route : '/main',
            index : Em.State.extend({
                route : '/'
            })
        })
    });
    
    App.Router = Ember.Router.extend({
        location : 'hash',
        enableLogging : true,
        root : App.RootState
    });
    
    // later...
    
    App.RootState.reopen({
        module: Em.State.extend({
            route : '/module',
            index : Em.State.extend({
                route : '/'
            })
        })
    });
    
    App.initialize();​
    

    编辑:我使用 GitHub 上的最新版本

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-11
      • 2022-10-15
      相关资源
      最近更新 更多