Enrutamiento de Ember.js: ¿cómo se configura una ruta predeterminada para que se genere inmediatamente?
Estoy seguro de que esto quedará claro a medida que profundizo, pero por ahora no es obvio cómo hacer que esto suceda.
Estaba siguiendo la informacion eneste útil artículo sobre enrutamiento pero falta una pieza importante en el ejemplo, es decir, ¿cómo se obtiene la vista de "inicio" sin tener que hacer clic en el enlace "inicio"?
Comencé a profundizar en los documentos para tratar de dar sentido a esto, pero mientras tanto parece una pregunta útil que hay que responder para la posteridad.
He estado jugando con el ejemplo de trabajo de jsfiddle de la pregunta anterioraquí y comparando con este otro ejemplo encontré queParece tener el enrutamiento por defecto funcionando
Hasta ahora sigue siendo un misterio.
Codigo actual:
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");
}
})
});
ACTUALIZACIÓN: Solución
Resulta que la razón por la que el ejemplo con el que estaba trabajando no funcionaba era porque estaba usandoEm.State.extend
más bien queEm.Route.extend
. La parte interesante es que a medida que paso y los cambio uno por uno, el ejemplo no funcionará hasta que los cambie todos.
Aquí está el trabajoejemplo:
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");
}
})
});