Spec-Zone.ru › Marionette.js 2

Маршрутизатор Marionette.AppRouter

Уменьшите объём кода для обработки событий маршрутов и вызова единственного метода в другом объекте. Настройте маршрутизаторы таким образом, чтобы они напрямую вызывали метод вашего объекта.

Индекс документации

  • Настройка маршрутов
  • Настройка маршрутов в конструкторе
  • Добавление маршрутов во время выполнения
  • Указание контроллера
  • onRoute

Настройка маршрутов

Настройте AppRouter с appRoutes. Определение маршрута передаётся стандартным обработчикам маршрутизации Backbone. Это означает, что вы определяете маршруты, как обычно. Однако вместо того, чтобы предоставлять метод обратного вызова, существующий в маршрутизаторе, вы предоставляете метод обратного вызова, существующий в контроллере, который вы указываете для экземпляра маршрутизатора (см. ниже).

var MyRouter = Marionette.AppRouter.extend({
  // "someMethod" must exist at controller.someMethod
  appRoutes: {
    "some/route": "someMethod"
  },

  /* standard routes can be mixed with appRoutes/Controllers above */
  routes : {
    "some/otherRoute" : "someOtherMethod"
  },
  someOtherMethod : function(){
    // do something here.
  }

});

Вы также можете добавить стандартные маршруты в AppRouter с методами в маршрутизаторе.

Настройка маршрутов в конструкторе

Маршруты также можно определить через параметры функции конструктора.

var MyRouter = new Marionette.AppRouter({
  controller: myController,
  appRoutes: {
    "foo": "doFoo",
    "bar/:id": "doBar"
  }
});

Это позволяет создавать экземпляры маршрутизатора без необходимости .extend из AppRouter. Вы можете просто создать экземпляр с определёнными в конструкторе маршрутами, как показано.

Добавление маршрутов во время выполнения

Помимо установки appRoutes для AppRouter, вы можете добавить маршруты приложения во время выполнения экземпляру маршрутизатора. Это выполняется с помощью вызова метода appRoute(). Он работает так же, как встроенный вызов router.route() из маршрутизатора Backbone, но имеет все те же семантику и поведение конфигурации appRoutes.

var MyRouter = Marionette.AppRouter.extend({});

var router = new MyRouter();
router.appRoute("/foo", "fooThat");

Также вы можете указать контроллер с несколькими маршрутами во время выполнения с помощью метода processAppRoutes. Однако в этом случае текущий контроллер AppRouter не изменится.

var MyRouter = Marionette.AppRouter.extend({});

var router = new MyRouter();
router.processAppRoutes(myController, {
  "foo": "doFoo",
  "bar/:id": "doBar"
});

Указание контроллера

AppRouter может использовать только один объект controller. Вы можете либо указать его напрямую в определении маршрутизатора:

var someController = {
  someMethod: function(){ /*...*/ }
};

Marionette.AppRouter.extend({
  controller: someController
});

… или в параметре конструктора:

var myObj = {
  someMethod: function(){ /*...*/ }
};

new MyRouter({
  controller: myObj
});

Объект, используемый как controller, не имеет требований, кроме того, что он будет содержать методы, указанные в appRoutes.

Рекомендуется делить ваши объекты контроллера на более мелкие части связанной функциональности и иметь несколько маршрутизаторов/контроллеров вместо одного большого маршрутизатора и контроллера.

onRoute

Если он существует, AppRouter вызовет метод onRoute всякий раз, когда пользователь переходит по вашему приложению. Метод обратного вызова получает три аргумента: имя, путь и аргументы маршрута.

© 2016 Muted Solutions, LLC
Licensed under the MIT License.
https://marionettejs.com/docs/v2.4.7/marionette.approuter.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API