Ember.js emberjs:在应用程序初始化()之后添加路由
在使用emberjs构建基于路由器的应用程序时,我遇到了以下问题。我的应用程序简化结构如下:Ember.js emberjs:在应用程序初始化()之后添加路由,ember.js,router,Ember.js,Router,在使用emberjs构建基于路由器的应用程序时,我遇到了以下问题。我的应用程序简化结构如下: var App = Em.Application.create({}); App.ApplicationController = Em.Controller.extend({}); App.ApplicationView = Em.View.extend({ template : Em.Handlebars.compile('APPLICATION TEMPLATE') });
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();
就像我的应用程序演示的那样,我尝试在运行时用新路由扩展路由器。我知道存在另一个类似问题的线程,但讨论的示例不适用于我。
如何在运行时使用其他路由扩展路由器,而不在每次…重新打开({})后调用initialize()
执行此操作的背景是在运行时决定应用程序的外观,例如,使用不同的wiget路由插入不同的wiget
问候,,
T您能描述一下您的代码出现了什么样的问题吗?新定义的路线是否可访问?控制器不可用吗?好的。我的问题如下。重新打开RootState后,我无法访问要添加到路由器的新属性(即路由)。我必须再次调用initialize-方法才能获得访问权限。但是通过这样做,应用程序会两次进入init状态,例如,我的applicationView会被绘制两次。你能跟踪我的执行吗?我不知道重新打开是如何工作的,但我认为当你在类上调用重新打开时,新的行为在新实例上可用,但在已经定义的实例上不可用。因此,在初始化时,定义了整个路由器。不幸的是,我认为您试图做的(在运行时定义新路由)是不可能的…根据,您似乎应该使用
重新打开类
,而不是重新打开
,如图所示。您能描述一下您的代码出现了什么样的问题吗?新定义的路线是否可访问?控制器不可用吗?好的。我的问题如下。重新打开RootState后,我无法访问要添加到路由器的新属性(即路由)。我必须再次调用initialize-方法才能获得访问权限。但是通过这样做,应用程序会两次进入init状态,例如,我的applicationView会被绘制两次。你能跟踪我的执行吗?我不知道重新打开是如何工作的,但我认为当你在类上调用重新打开时,新的行为在新实例上可用,但在已经定义的实例上不可用。因此,在初始化时,定义了整个路由器。不幸的是,我认为您试图做的事情(在运行时定义新路由)是不可能的…根据,您似乎应该使用重新打开类
,而不是重新打开
,如图所示