Jestem pewien, że stanie się to jasne, kiedy będę się pogłębiał, ale na razie nie jest oczywiste, jak to się stało.Trasowanie Ember.js: jak ustawić domyślną trasę do renderowania natychmiast?
Podążałem za informacją na temat this helpful SO article about routing, ale w tym przykładzie brakuje ważnego elementu, tj. Jak uzyskać widok "domowy", aby renderować od razu, bez konieczności klikania linku "Strona główna"?
Zacząłem zagłębiać się w dokumentach, próbując to zrozumieć, ale tymczasem wydaje się, że przydatnym pytaniem była odpowiedź dla potomności.
Grałem z pracy jsfiddle przykład z powyższym pytaniem here i porównując z tym inny przykład stwierdziliśmy, że seems to have the default routing working
tej pory to wciąż tajemnica.
Aktualny kod:
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");
}
})
});
AKTUALIZACJA: Rozwiązanie
Okazuje się, że powodem przykład pracowałem z nie działa, ponieważ był za pomocą Em.State.extend
raczej niż Em.Route.extend
. Ciekawe jest to, że gdy przejdę i zmieniam je jeden po drugim, przykład nie zadziała, dopóki nie zmienię ich wszystkich.
Oto pracuje example:
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");
}
})
});
Dzięki dla przykładu roboczego. Zajęło mi trochę czasu, aby dowiedzieć się, jaka jest różnica z mojego przykładu powyżej, ale w końcu zorientowałem się. Podany przeze mnie przykład nie działał, ponieważ używał 'Em.State.extend' zamiast' Em.Route.extend' – radixhound