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

Глобальные события backbone.js

Быстрый вопрос о событиях в Backbone - есть ли способ определить набор глобальных событий, которые могут быть повторно использованы в разных представлениях?

Например, скажем, у меня есть несколько видов, которые отображаются на странице. Каждый вид имеет кнопку, которая расширяет меню. Есть также несколько других общих элементов и событий. Не помещая эту логику событий в каждый вид, существует ли способ, которым каждое из этих представлений может наследовать, или вывести эти события из определения глобальных событий? Это, безусловно, сэкономит время и станет намного более чистым решением, определяя эти общие события в одном месте.

Я видел такие термины, как агрегатор событий и шаблоны Factory, но не уверен в наилучшем подходе (или если они достигнут того, что мне нужно).

4b9b3361

Ответ 1

В основном вы описываете агрегатор событий или диспетчер, да. У меня есть несколько статей о создании и использовании их с Backbone:

http://lostechies.com/derickbailey/2011/07/19/references-routing-and-the-event-aggregator-coordinating-views-in-backbone-js/

http://lostechies.com/derickbailey/2012/04/03/revisiting-the-backbone-event-aggregator-lessons-learned/

И есть еще много статей по всему Интернету, чтобы сделать то же самое с Backbone и другими библиотеками pub/sub.

Это довольно просто сделать в Backbone:


vent = _.extend({}, Backbone.Events);

и теперь у вас есть объект vent, который может использоваться как агрегатор событий во всех ваших представлениях приложений и других объектах.


vent.on("some:event", function(){
  console.log("some event was fired");
});

vent.trigger("some:event");