Маршрутизация в Ember.js: как установить маршрут по умолчанию для немедленного отображения?

Я уверен, что это станет ясно, когда я копну глубже, но пока не очевидно, как это сделать.

Я следил за информацией в этой полезной статье 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");
        }
  }) 
});

7
задан Community 23 May 2017 в 12:09
поделиться