Подтвердить что ты не робот

Backbone.js - использование триггера для запуска события и передачи данных

Я пишу компонент меню вкладки, используя backbone.js в качестве среды MVC. Когда пользователь нажимает на вкладку, компонент переключает вкладки (внутренняя операция), но тогда я хотел бы, чтобы слушатели компонента ответили на действие, связанное с событием. Идея заключается в том, что я абстрагирую различные клики на конкретные действия. Например, модель для каждой вкладки представляет собой хэш со следующей структурой:

{
    label : <string>,
    actionCommand : "save",
    tabClass : <string>
}

Событие, которое будет запущено, будет называться "действие", поэтому слушатели будут реагировать на "действие", но затем переадресуют конкретную команду. Например:

this.trigger("action", {actionCommand: "save"});

Слушатель, в свою очередь, обработает событие аналогично следующему:

handleAction : function(event) {
  if (event.actionCommand == "save") {
    ...do something...
  }

}

Возможно ли это? Я не мог получить это из документации. Заранее благодарим за любую информацию, которую вы можете предложить.

4b9b3361

Ответ 1

Да, это возможно с помощью Backbone.

Вы можете использовать модуль Events, чтобы позволить объекту связывать и запускать пользовательские именованные события.

В вашем случае вам нужно добавить модуль Events к вашему компоненту компонента меню. Если этот объект является Магистральной моделью, то он уже имеет модуль Events. Если нет, вы можете добавить его со следующим кодом

_.extend(MenuComponent, Backbone.Events);

Тогда ваши слушатели могут подписаться так

MenuComponent.bind("action", this.handleAction, this);

И вы можете инициировать событие, как вы уже упоминали

this.trigger("action", {actionCommand: "save"});