2012-04-15 3 views
0

в одном из представлений (View A) каркасное приложения Я смотрю на (который имеет несколько моделей), она имеет эту линию в своем инициализаторемагистральные: отношения между моделями и представлениями

this.model.bind('change', this.setText, this); 

В другой Вид (View B), он не имеет эту линию в своей инициализаторе

this.model.bind('change', this.render, this); 

Однако нигде ни в одном View не указывает, какую модель он подключен. т. е. нет объявления о том, что такое 'model'. Означает ли это, что любая Модель, которая запускает 'change', например, вызывает this.setText в представлении A, а также (в то же время) this.render в View B?

ответ

4

Из fine manual: конструктор

/инициализироватьnew View([options])

[...] Есть несколько специальных опций, которые, если он будет принят, будет присоединенные непосредственно к просмотру: model, collection , el, id, className, tagName и attributes.

Итак, когда вы инстанцирует вид с этим:

var v = new SomeView({ model: m }); 

Backbone автоматически установит this.model в m внутри v, и это будет сделано до initialize называется. Ищите вызовы конструктора для представлений, которые имеют эти вызовы bind, вы должны увидеть model, предоставленные при создании экземпляров.

Означает ли это, что любая модель, которая вызывает 'change', например, вызовет this.setText в View A, а также (в то же время) this.render в View B?

Нет, каждый вид (в данном случае) будет иметь свою собственную модель, которая предоставляется при создании экземпляра, события будут происходить только из этой модели.

+0

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

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