当您想使用Em.Application.create()
在路由器中创建的类时,您需要在 application.create 之外指定路由器。但是因为应用程序是自动初始化的,所以路由器不会路由到/
路由。
您过去可以通过添加autoinit: false
到 application.create 来推迟初始化。现在你应该使用App.deferReadiness()
and App.advanceReadiness()
。但是,这似乎不起作用。
而且我似乎无法摆脱您“应该”以不同方式做事的感觉。
我添加了最少的代码来显示下面的问题。这里还有一个jsfiddle
编辑:
显然 ember 中有一个新路由器,我有点忽略了这一点。我已将代码更改为新路由器,但猜猜它仍然无法正常工作:P
window.App = App = Em.Application.create({
ApplicationController: Em.Controller.extend({}),
ApplicationView: Em.View.extend({
template: Em.Handlebars.compile('{{outlet}}'),
}),
ExtendedPatientController: Em.ObjectController.extend({}),
ExtendedPatientView: Em.View.extend({
classNames: ['patient-view', 'extended'],
template: Em.Handlebars.compile('{{name}}')
}),
Patient: Em.Object.extend({
name: undefined,
}),
});
App.Router.map(function (match) {
match('/').to('application', function (match) {
match('/').to('extendedPatient');
})
});
App.deferReadiness();
App.ExtendedPatientRoute = Em.Route.extend({
setupController: function (controller) {
controller.set('', App.Patient.create({
name: "Bert"
}));
},
renderTemplates: function () {
this.render('extendedPatient', {
into: 'application'
});
}
});
App.advanceReadiness();