Backbone.js + глобальный диспетчер событий + require.js: how-to? - программирование
Подтвердить что ты не робот

Backbone.js + глобальный диспетчер событий + require.js: how-to?

У меня есть несколько базовых моделей, организованных в коллекциях и связанных с их соответствующими представлениями и/или коллекциями представлений. Некоторые из этих моделей, которые не принадлежат к одной коллекции, должны инициировать событие, которое представляет интерес для другой модели (и, возможно, более одного).

Рекомендуемый способ справиться с этим - это, я думаю, "глобальный диспетчер событий/агрегатор событий", как описано здесь и в других местах.

Однако я также использую require.js, который, похоже, противоречит идее присоединения диспетчера/агрегатора к объекту пространства имен приложения - или я здесь не прав?

Итак, мой вопрос: using require.js, как я могу использовать несколько разных моделей базовых процессоров, чтобы инициировать событие, которое будет обрабатываться другой моделью?

4b9b3361

Ответ 1

Аналогичное решение для того, что предлагалось @Andreas, но без Backbone.Marionette(тем не менее,

Ответ 2

Мы используем Marionettes app.vent (который является глобальным передатчиком событий для нашего приложения), а также требует js и работает очень хорошо.

Приложение

define(, function(){
  return new Backbone.Marionette.Application();
})

Model1

define(['app'], function(app){
  return Backbone.Marionette.Model.extend({
    initialize: function(){
      this.bindTo('app.vent', 'create:model2', this.toSomething, this);
    }
  })
})

Model2

define(['app'], function(app){
  return Backbone.Marionette.Model.extend({
    initialize: function(){
      app.vent.trigger('create:model2', this);
    }
  })
})