2013-03-08 2 views
1

Я пытаюсь уничтожить просмотр/развязать все события, когда представление больше не требуется. Что я делаю:backbone.js просмотреть события не уничтожаются

view.$el.removeData().unbind(); 
view.undelegateEvents(); 
view.remove(); 

Вид разрушается, я не могу больше видеть соответствующий элемент в DOM, но события, кажется, сохраняются. Я использую инструменты разработчика Chrome и проверяю использование памяти, и я вижу, что каждый раз, когда я визуализирую представление, а затем уничтожаю его, слушатели событий поднимаются на один.

Я пытался выводить просматривать события, выполнив:

this.$el.data("events"); 

, но это дает мне неопределенными.

Любые мысли?

спасибо.

+0

Считает ли вы содержит мнения детей? Вы должны также отвязать/удалить их – jviotti

ответ

2

Это отличная статья описывает, как предотвратить утечку памяти в Backbone: http://andrewhenderson.me/tutorial/how-to-detect-backbone-memory-leaks/

Его полная рутина, чтобы уничтожить вид выглядит следующим образом:

this.unbind(); // Unbind all local event bindings 
this.model.unbind('change', this.render, this); // Unbind reference to the model 
this.options.parent.unbind('close:all', this.close, this); // Unbind reference to the parent view 

this.remove(); // Remove view from DOM 

delete this.$el; // Delete the jQuery wrapped object variable 
delete this.el; // Delete the variable reference to this node 
Смежные вопросы