2012-05-04 2 views
1

Предположим, у меня есть некоторые модели в коллекции и представления с связанными с ними событиями. Легкий способ добавить это в DOM - это «однострочный».Может ли анонимный созданный объект удаляться из памяти (пример Backbone.js)

$('body').html(new MyView({ collection: new MyCollection() }).el); 

Обратите внимание, что модель имеет прослушиватели событий (CRUD), в коллекции есть некоторые, а в представлении есть некоторые.

Теперь мы закончили с этим видом, и мы хотим изменить представление. Мы можем сделать что-то подобное.

$('body').html(new MyNextView({ collection: new MyNextCollection() }).el); 

Теперь на странице есть все новые элементы, но все старые элементы все еще на месте. Нам нужен способ отсоединить все события от всех объектов.

Есть ли способ достичь этого.

-

Я знаю, что это было бы возможно, если вы храните массив со всеми объектами, хранящимися. Таким образом, вы можете зацикливаться на массиве и отвязать все события от всего объекта. Мне просто интересно, возможно ли это с анонимно созданных объектов.

ответ

0

Если вы можете ссылаться на элемент представления (например, потому что вы знаете идентификатор), то вызов $(el).remove() удалит представление из DOM и должен удалить любые привязки событий на основе DOM (если представление не прослушивает DOM за пределами его el).

Но это не обязательно означает, что он будет удален из памяти - вам все равно придется следить за другими ссылками на представление и коллекцию.

Смежные вопросы