2

在使用 emberjs 构建基于路由器的应用程序时,我遇到了以下问题。我的应用程序简化结构如下:

var App = Em.Application.create({});

App.ApplicationController   = Em.Controller.extend({});

App.ApplicationView = Em.View.extend({

    template    : Em.Handlebars.compile('APPLICATION TEMPLATE')

});


App.RootState   = Em.Route.extend({

    index   : Em.Route.extend({
        route   : "/"
    })

})

App.Router  = Em.Router.extend({

    root    : App.RootState

});

    // initialize the app here
App.initialize();

// extend the RootState from anywhere. eg. from a plugged widget 
App.RootState.reopen({

    login   : Em.Route.extend({
        route   : "/state1"
    })

});

//App.initialize(); //init the app a second time forces unexpected behaviour 

App.RootState.reopen({

    alarms  : Em.Route.extend({
        route   : "/state2"
    })

});

//App.initialize();

就像我的应用程序演示的那样,我尝试在运行时使用新路由扩展路由器。我知道存在另一个存在类似问题的线程,但讨论的示例对我不起作用。如何在运行时使用其他路由扩展我的路由器,而无需在每次 ...reopen({}) 之后调用 initialize()。

这样做的背景是在运行时决定应用程序的外观,例如用自己的路由插入不同的wiget。

问候,T

4

0 回答 0