我有3条路线的应用程序:
"/"
"/one"
"/two"
我希望在加载header
之前连接footer
和applicationView
等网点。
由于ember只能导航到叶节点,我无法在/one
下嵌套two
和/
,仍然可以导航到/
这意味着我必须分别重复所有3条路线的connectOutlets
代码才能连接header
和footer
。
我无法在路由器的connectOutlets
属性上使用root
,因为applicationController
尚未就绪。
如果在执行任何路由之前我的应用程序首次加载时如何连接applicationView
上的插座?
答案 0 :(得分:1)
您可以在非叶子路由中使用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');
}
}),
...
})
})
});