我相信随着我深入研究,这将变得清晰,但目前尚不清楚如何实现这一点。
我正在关注这篇关于路由的有用 SO 文章的信息,但示例中缺少一个重要部分,即如何在无需单击“主页”链接的情况下立即呈现“主页”视图?
我已经开始深入研究文档以试图理解这一点,但与此同时,为后代回答似乎是一个有用的问题。
我一直在玩上述问题中的工作 jsfiddle 示例,并与我发现的其他示例进行比较,该示例似乎具有默认路由工作
到目前为止,这仍然是一个谜。
当前代码:
App.Router = Em.Router.extend({
enableLogging: true,
location: 'hash',
root: Em.State.extend({
// EVENTS
goHome: Ember.State.transitionTo('home'),
viewProfile: Ember.State.transitionTo('profile'),
// STATES
index: Em.State.extend({
route: "/",
redirectsTo: 'home'
}),
home: Em.State.extend({
route: '/home',
connectOutlets: function(router, context) {
var appController = router.get('applicationController');
appController.connectOutlet('home');
}
}),
// STATES
profile: Em.State.extend({
route: '/profile',
connectOutlets: function(router, context) {
var appController = router.get('applicationController');
appController.connectOutlet('profile');
}
}),
doOne: function() {
alert("eins");
}
})
});
更新:解决方案
事实证明,我正在使用的示例不起作用的原因是因为它使用Em.State.extend
而不是Em.Route.extend
. 有趣的是,当我一步一步地改变它们时,这个例子在我全部改变之前不起作用。
这是工作示例:
App.Router = Em.Router.extend({
enableLogging: true,
location: 'hash',
root: Em.Route.extend({
// EVENTS
goHome: Ember.State.transitionTo('home'),
viewProfile: Ember.State.transitionTo('profile'),
// STATES
index: Em.Route.extend({
route: "/",
redirectsTo: 'home'
}),
home: Em.Route.extend({
route: '/home',
connectOutlets: function(router, context) {
var appController = router.get('applicationController');
appController.connectOutlet({name: 'home'});
}
}),
// STATES
profile: Em.Route.extend({
route: '/profile',
connectOutlets: function(router, context) {
var appController = router.get('applicationController');
appController.connectOutlet('profile');
}
}),
doOne: function() {
alert("eins");
}
})
});