0
var BaseView = Backbone.View.extends({ 
}); 
var ComponentView = BaseView.extends({ 
}); 
var ChildView1 = ComponentView.extends({ 
}); 
var ChileView2 = ComponentView.extends({ 
}); 

Я хочу к иметь поперечную связь компонентов между ChildView1 и ChileView2.вид Backbone - коммуникационный компонент Cross

Я хотел бы иметь a _.extend({}, Backbone.Events) OBJ в parent(ComponentView).

я видел в некоторых примерах нечто вроде ниже

var ComponentView = BaseView.extends(_.extend({}, Backbone.Events, { 
}); 

PS: я инициализирует все компоненты из другого BackboneView используя атрибут присутствует на компонентах

ответ

2

В Backbone, я предпочитаю использовать некоторые сортировать шаблон публикации/подписки для связи между представлениями. В это самая простая форма, ваш код будет выглядеть примерно следующее:

/* Create an Event Aggregator for our Pub/Sub */ 
var eventAggregator = _.extend({}, Backbone.Events); 

/* Pass that Event Aggregator to our Child Views */ 
var childView1 = new ChildView1({ "eventAggregator": eventAggregator }); 

/* From here we can just bind/trigger off of eventAggregator whenever we need */ 
eventAggregator.bind("tellChild", function(e) { alert(e.message); }); 
eventAggregator.trigger("tellChild", { "message": "hello" }); 

Обратите внимание, как мы создаем новый объект, который простирается от встроенного в Backbone.Events и передачи его в ChildView1. Внутри ChildView или где-либо еще, у которого есть ссылка на eventAggregator, вы можете связывать/запускать новые события. Тем не менее, это верхушка айсберга, поскольку вам нужно будет больше не знать об этом обработчике событий, отвязывая обработчик событий и гарантируя, что вы не просачиваете память.

Здесь недостаточно места, чтобы углубиться в это, поэтому я бы рекомендовал больше узнать о агрегации событий в Backbone. Вся моя логика, которую я когда-либо использовал, вытекает из работы, которую Дерик Бэйли написал в blog posts и его книге «Building Backbone Plugins» (оба источника превосходства информации). В конечном итоге это было связано с его работой по созданию Marionette, что является хорошим дополнением к Backbone. Если вы не хотите беспокоиться об этих проблемах или просто хотите получить более простой API, я рекомендую использовать Marionette или что-то подобное, чтобы улучшить ваши Магистральные виды.

+0

Я согласен с этим подходом. Но я хочу сохранить объект агрегатора событий в parentView (например, ComponentView). –

+0

Да, вы можете это сделать. Просто создайте компонент ComponentView агрегатор событий и перейдите в ChildView1 и ChildView2, когда они будут созданы. – scottheckel