在使用 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