Marionette.Controller

Внимание: не рекомендуется к использованию.

Класс Controller считается устаревшим и не рекомендуется к использованию. Вместо него следует использовать простой javascript-объект, каждый метод которого будет соотвествовать конкретному роуту из AppRouter.

Класс Controller это объект, который предназначен для использования с классом AppRouter. Экземпляр класса Controller служит для хранения методов-обработчиков роутов из экземпляра класса AppRouter.

Содержание

Основное применение

Controller предназначен исключительно для использования в роутере.

// Создаем контроллер и указываем обработчики для роутера.
var MyController = Marionette.Controller.extend({
  home: function() {},
  profile: function() {}
});

// Создаем экземпляр контроллера
var myController = new MyController();

// Передаем экземпляр в конструктор роутера
var myRouter = new Marionette.AppRouter({
  controller: myController,
  appRoutes: {
    "home": "home",
    "profile": "profile"
  }
});

Метод mergeOptions

Метод копирует ключи из объекта options непосредственно в сам экземпляр класса Controller. Это наиболее предпочтительный способ доступа к параметрам, переданным в Controller.

Более подробно об этом методе читайте тут.

Метод getOption

Метод позволяет получить значение свойства контроллера. Это свойство может принадлежать как самому контроллеру непосредственно, так и быть вложенным в свойстве this.options контроллера. Если запрашиваемое свойство сущестует и в контроллере и в this.options, то метод вернет значение из this.options. Более подробно об этом методе читайте тут.

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

Каждый экземпляр контроллера имеет встроенный метод destroy, который удаляет все обработчики событий, присоединенные к экземпляру контроллера, а также те, которые были навешаны с помощью EventBinder.

Вызов метода destroy запустит события “before:destroy” и “destroy” и вызовет соответствующие методы onBeforeDestroy и onDestroy. В эти методы будут переданы аргументы, с которыми был вызван метод destroy:

// Объявляем контроллер с методом onDestroy
var MyController = Marionette.Controller.extend({
  onBeforeDestroy: function(arg1, arg2){
    // код в этом месте будет выполнен до выключения контроллера
  }

  onDestroy: function(arg1, arg2){
    // код в этом месте будет обрабатывать выключение контроллера
  }
});

// Создаем экземпляр контроллера
var myController = new MyController();

// Добавляем несколько обработчиков событий
myController.on("before:destroy", function(arg1, arg2){ ... });
myController.on("destroy", function(arg1, arg2){ ... });
myController.listenTo(something, "bar", function(){...});

// Выключаем контроллер: отписываемся от всех событий,
// вызываем событие "destroy" и метод onDestroy
myController.destroy(arg1, arg2);

Приоритетное использование

До версии 2.1 контроллер использовался иначе. Контроллер был объектом общего назначения, с помощью которого можно было создавать свои сущности. Это сбивало с толку, поскольку он так же использовался и в роутере. Кроме того, сам термин контроллер ошибочно ассоциировался с контроллером из паттерна MVC.

Начиная с версии 2.1, для общего назначения был создан новый класс Marionette.Object. Рекомендуется использовать именно этот новый класс вместо контроллера во всех случаях, за исключением роутера.