Ember.js在加载任何路线之前连接插座

Ember.js在加载任何路线之前连接插座,ember.js,Ember.js,我有一份3条路线的申请: "/" "/one" "/two" 在加载任何插座之前,我想连接应用程序视图上的页眉和页脚 由于余烬只能导航到叶节点,因此我无法在/下嵌套/one和two,并且仍然能够导航到/ 这意味着我必须对所有3条路线分别重复连接插座代码,以连接页眉和页脚 我无法在路由器的root属性上使用connectOutlets,因为applicationController尚未就绪 在执行任何路由之前,当我的应用程序首次加载时,如何连接应用程序视图上的插座?您可以在非叶路由中使用Conn

我有一份3条路线的申请:

"/"
"/one"
"/two"
在加载任何插座之前,我想连接
应用程序视图
上的
页眉
页脚

由于余烬只能导航到叶节点,因此我无法在
/
下嵌套
/one
two
,并且仍然能够导航到
/

这意味着我必须对所有3条路线分别重复
连接插座
代码,以连接
页眉
页脚

我无法在路由器的
root
属性上使用
connectOutlets
,因为
applicationController
尚未就绪


在执行任何路由之前,当我的应用程序首次加载时,如何连接
应用程序视图
上的插座?

您可以在非叶路由中使用ConnectOutlet,当路由器将这些路由遍历到叶路由时,它将运行这些ConnectOutlet。要解决其他问题(路由到“/”),最好在任何非叶路由中使用索引路由(“/”)

编辑:因为我们已经确认根路由中没有定义applicationController,所以简单地将所有内容都放在根路由的子路由中似乎可以解决这个问题,并且不会改变路由器的功能

App.Router=Ember.Router.extend({
根:Ember.Route.extend({
路线:“/”,
应用程序:Ember.Route.extend({
路线:“/”,
连接插座:功能(路由器){
router.get(“applicationController”).connectOutlet({
viewClass:App.HeaderView,
outletName:'标题'
});
},
索引:Ember.Route.extend({
路线:“/”,
连接插座:功能(路由器){
router.get(“applicationController”).connectOutlet(…);
}
}),
一:余烬。路线。延伸({
路由:'/one',
连接插座:功能(路由器){
//如果您有OneController和OneView:
router.get(“applicationController”).connectOutlet(“一”);
}
}),
...
})
})
});

您可以在非叶路由中使用ConnectOutlet,当路由器穿过这些路由到达叶路由时,它将运行这些ConnectOutlet。要解决其他问题(路由到“/”),最好在任何非叶路由中使用索引路由(“/”)

编辑:因为我们已经确认根路由中没有定义applicationController,所以简单地将所有内容都放在根路由的子路由中似乎可以解决这个问题,并且不会改变路由器的功能

App.Router=Ember.Router.extend({
根:Ember.Route.extend({
路线:“/”,
应用程序:Ember.Route.extend({
路线:“/”,
连接插座:功能(路由器){
router.get(“applicationController”).connectOutlet({
viewClass:App.HeaderView,
outletName:'标题'
});
},
索引:Ember.Route.extend({
路线:“/”,
连接插座:功能(路由器){
router.get(“applicationController”).connectOutlet(…);
}
}),
一:余烬。路线。延伸({
路由:'/one',
连接插座:功能(路由器){
//如果您有OneController和OneView:
router.get(“applicationController”).connectOutlet(“一”);
}
}),
...
})
})
});

有人告诉我您想为应用程序创建布局视图对不起,我可能回答您的问题太早了。你能解释一下为什么你的applicationController在根路径中没有准备好吗?@dmzza@pauldechov谢谢。我一直使用我在下面编辑的内容,因为有人给了我这个提示,现在我知道为什么了。有人告诉我你想为你的应用程序创建布局视图。对不起,我可能回答你的问题太早了。你能解释一下为什么你的applicationController在根路径中没有准备好吗?@dmzza@pauldechov谢谢。我一直使用我在下面编辑的内容,因为有人给了我这个提示,现在我知道为什么了。如果你看看控制台输出,这个jsfiddle显示了根路由的
connectOutlets
方法中的
applicationController
还没有准备好:我听说了一个技巧,可以通过将所有内容放在根路由的子路由中来解决这类问题。如果您查看控制台输出,这个jsfiddle显示根路由的
connectOutlets
方法中的
applicationController
还没有准备好:我听说了一个技巧,可以通过将所有内容都放在根的子路由中来解决这类故障。