Если вы посмотрите на приложение ToDo в инструментах Dev, новый ToDoView создается в AppView каждый раз, когда создается новая задача (модель). Но я не вижу «коллекцию» ToViews. Я спрашиваю об этом, потому что думаю, что представление уничтожается при уничтожении модели, но не могу найти ссылку. Спасибо
Являются ли основные представления постоянными
Ответы (1)
Представления обычно являются структурами в памяти (как и сама DOM), поэтому, пока ваш код javascript содержит ссылку на них (что делает их неприемлемыми для сборки мусора движком JS браузера), они продолжают существовать. Закройте окно, и они исчезнут. Щелкните ссылку на другую страницу, которая загружает всю страницу, и они исчезнут.
Однако представление не реагирует автоматически на уничтожение модели. Вам нужно вручную подключить что-то вроде this.listenTo(this.model, 'destroy', this.remove.bind(this))
или что-то в этом роде, если вы хотите, чтобы модель исчезла из DOM при ее удалении через магистраль.
Кроме того, как вы заметили, обычно, когда у вас есть коллекция моделей, которые вы хотите визуализировать, вы просто создаете новое представление для каждой модели, визуализируете ее, а затем не сохраняете ссылку на нее. Когда коллекция изменяется, самый внешний элемент очищается, создаются и визуализируются новые экземпляры представления, и, таким образом, старые экземпляры представления имеют право на автоматическую сборку мусора. Таким образом, javascript будет обрабатывать эти старые представления, но это не повлияет на соответствующие модели и не вызовет никаких запросов AJAX.