Я уверен, что это станет ясно, когда я копну глубже, но пока не очевидно, как это сделать.
Я следил за информацией в этой полезной статье 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");
}
})
});