您可以在非叶子路由中使用 connectOutlets,当路由器将这些路由遍历到叶子路由时,它将运行这些 connectOutlets。要解决您的其他问题(路由到“/”),最好在任何非叶路由中都有一个索引路由(“/”)。
编辑:由于我们已经确认 applicationController 在根路由中未定义,简单地将所有内容放在根路由的子路由中似乎可以解决该问题,并且不会改变路由器的功能。
App.Router = Ember.Router.extend({
root: Ember.Route.extend({
route: '/',
app: Ember.Route.extend({
route: '/',
connectOutlets: function(router) {
router.get("applicationController").connectOutlet({
viewClass: App.HeaderView,
outletName: 'header'
});
},
index: Ember.Route.extend({
route: '/',
connectOutlets: function(router) {
router.get("applicationController").connectOutlet(...);
}
}),
one: Ember.Route.extend({
route: '/one',
connectOutlets: function(router) {
// if you have a OneController and OneView:
router.get("applicationController").connectOutlet('one');
}
}),
...
})
})
});