Estoy seguro de que esto se aclarará a medida que profundice más, pero por ahora no es obvio cómo hacer que esto suceda.Enrutamiento de Ember.js: ¿cómo se establece una ruta predeterminada para procesar de inmediato?
Estaba siguiendo la información en this helpful SO article about routing pero falta una pieza importante en el ejemplo, es decir, ¿cómo se obtiene la vista "de inicio" inmediatamente sin tener que hacer clic en el enlace "de inicio"?
He empezado a buscar en los documentos para tratar de dar sentido a esto, pero mientras tanto parece una pregunta útil para la posteridad.
He estado jugando con el ejemplo jsFiddle de trabajo de la cuestión here arriba y la comparación con este otro ejemplo, me encontré con que seems to have the default routing working
Hasta el momento sigue siendo un misterio.
código 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 el ejemplo que estaba trabajando no estaba funcionando era porque estaba usando Em.State.extend
vez que Em.Route.extend
. La parte interesante es que a medida que avanzo y los cambio uno por uno, el ejemplo no funciona hasta que los cambio a todos.
Aquí es el example de trabajo:
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");
}
})
});
Gracias por el ejemplo de trabajo. Me tomó un tiempo descubrir cuál era la diferencia de mi ejemplo anterior, pero finalmente lo descubrí. El ejemplo que di no funcionó porque estaba usando 'Em.State.extend' en lugar de' Em.Route.extend' – radixhound