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...
}
}
Возможно ли это? Я не мог получить это из документации. Заранее благодарим за любую информацию, которую вы можете предложить.
Ответы
Ответ 1
Да, это возможно с помощью Backbone.
Вы можете использовать модуль Events, чтобы позволить объекту связывать и запускать пользовательские именованные события.
В вашем случае вам нужно добавить модуль Events к вашему компоненту компонента меню. Если этот объект является Магистральной моделью, то он уже имеет модуль Events. Если нет, вы можете добавить его со следующим кодом
_.extend(MenuComponent, Backbone.Events);
Тогда ваши слушатели могут подписаться так
MenuComponent.bind("action", this.handleAction, this);
И вы можете инициировать событие, как вы уже упоминали
this.trigger("action", {actionCommand: "save"});