2013-03-20 3 views
1

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

ответ

0

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

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

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

+0

Все еще смущен. Если данные модели изменяются, представление должно быть обновлено. Если его больше нет, как он обновляется? Кажется, что модели являются единственными реальными объектами, которые здесь можно повторить. – mike628

+0

Представления по-прежнему «действительно там», и если ваши события правильно подключены, то при изменении данных модели представления этой модели будут реагировать на эти события и соответственно обновлять их элементы DOM. Дело в том, что взгляды имеют ссылку на их модель, обычно нет веских оснований держать список представлений, потому что, если вы просто манипулируете моделями, привязки событий будут делать представление, и представления будут обновляться автоматически. Таким образом, вы можете хранить ссылки на свои взгляды, если хотите, иногда вам нужно, но часто вам это не нужно. Может быть, кто-то еще может объяснить лучше –

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