Удаление Marionette EventAggregator: действительно ли необходимо предотвращать утечки?

Я читаю EventAggregator Документ в Backbone.Wreqr. Это может быть использовано следующим образом.

MyApp.vent.trigger("some:namespaced:event");

MyApp.vent.on("some:namespaced:event", function(){
  // ...
});

Я не могу понять, если после установки обработчика в представлении мне нужно удалить его, или Marionette сделает это для меня в onClose метод или где-то еще? Если мне нужно удалить его, какой наилучший подход я могу использовать? Нужно ли просто off это событие? То же самое относится к Commands с помощью removeHandler?

Не могли бы вы указать мне правильное направление?

1 ответ

Решение

Это зависит от вашей ситуации. Если вы не хотите прослушивать какое-либо событие, когда модуль не работает, вы можете подписаться на событие "stop" модуля и выполнить off для всех необходимых событий.

module.on("stop", function(){
  App.vent.off(someMethods);
});

Как обычно, представление не использует глобальную агрегацию событий. Но если вы используете, вы должны использовать

this.listenTo( App.vent, "someEvent", function(){...} )

а затем марионетка удалить этот обработчик.

Другие вопросы по тегам