Глобальные события backbone.js
Быстрый вопрос о событиях в Backbone - есть ли способ определить набор глобальных событий, которые могут быть повторно использованы в разных представлениях?
Например, скажем, у меня есть несколько видов, которые отображаются на странице. Каждый вид имеет кнопку, которая расширяет меню. Есть также несколько других общих элементов и событий. Не помещая эту логику событий в каждый вид, существует ли способ, которым каждое из этих представлений может наследовать, или вывести эти события из определения глобальных событий? Это, безусловно, сэкономит время и станет намного более чистым решением, определяя эти общие события в одном месте.
Я видел такие термины, как агрегатор событий и шаблоны Factory, но не уверен в наилучшем подходе (или если они достигнут того, что мне нужно).
Ответы
Ответ 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");