Являются ли основные представления постоянными

Если вы посмотрите на приложение ToDo в инструментах Dev, новый ToDoView создается в AppView каждый раз, когда создается новая задача (модель). Но я не вижу «коллекцию» ToViews. Я спрашиваю об этом, потому что думаю, что представление уничтожается при уничтожении модели, но не могу найти ссылку. Спасибо


person mike628    schedule 20.03.2013    source источник


Ответы (1)


Представления обычно являются структурами в памяти (как и сама DOM), поэтому, пока ваш код javascript содержит ссылку на них (что делает их неприемлемыми для сборки мусора движком JS браузера), они продолжают существовать. Закройте окно, и они исчезнут. Щелкните ссылку на другую страницу, которая загружает всю страницу, и они исчезнут.

Однако представление не реагирует автоматически на уничтожение модели. Вам нужно вручную подключить что-то вроде this.listenTo(this.model, 'destroy', this.remove.bind(this)) или что-то в этом роде, если вы хотите, чтобы модель исчезла из DOM при ее удалении через магистраль.

Кроме того, как вы заметили, обычно, когда у вас есть коллекция моделей, которые вы хотите визуализировать, вы просто создаете новое представление для каждой модели, визуализируете ее, а затем не сохраняете ссылку на нее. Когда коллекция изменяется, самый внешний элемент очищается, создаются и визуализируются новые экземпляры представления, и, таким образом, старые экземпляры представления имеют право на автоматическую сборку мусора. Таким образом, javascript будет обрабатывать эти старые представления, но это не повлияет на соответствующие модели и не вызовет никаких запросов AJAX.

person Peter Lyons    schedule 20.03.2013
comment
Все еще в замешательстве. Если данные модели изменяются, необходимо обновить представление. Если его действительно больше нет, как его обновить? Кажется, что модели — единственные реальные объекты, которые здесь можно повторять. - person mike628; 20.03.2013
comment
Представления все еще существуют, и если вы правильно подключили свои события, когда данные модели изменяются, представления этой модели будут реагировать на эти события и соответствующим образом обновлять свои элементы DOM. Дело в том, что когда представления имеют ссылку на свою модель, обычно нет веских причин хранить список представлений, потому что, если вы просто манипулируете моделями, привязки событий будут выполнять представление, и представления будут обновляться автоматически. Таким образом, вы МОЖЕТЕ сохранить ссылки на свои взгляды, если хотите, иногда вам нужно, но часто вам не нужно. Может кто лучше объяснит - person Peter Lyons; 20.03.2013