Удаление 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(){...} )
а затем марионетка удалить этот обработчик.