Backbone Правило:
При создании экземпляра зрения, ll привязать все события к el, если было назначено, иначе view создает и присваивает пустой div как el для этого представления и связывает все события с этим видом.
В моем случае, если я назначить #app-container
для просмотра 1 и вид 2 как el
и когда я инициализировать оба представления, как показано ниже в App View
все события связываются с одной и той же емкости (я.е # приложение-контейнер)
this.v1 = new App.View1();
this.v2 = new App.View2();
приведет ли это к каким-либо утечек памяти/Zombies?
Ни в коем случае. Ни за что. Потому что в конечном итоге у вас есть только один экземпляр для каждого представления. Таким образом, это не приведет к утечке памяти.
В чем проблема?
Когда ваше приложение растет, очень часто используется тот же идентификатор для тега в обоих представлениях. Например, у вас может быть button
с идентификатором btn-save
в обоих шаблонах. Поэтому, когда вы связываете btn-save в обоих представлениях, и когда вы нажимаете кнопку в любом представлении, он будет запускать метод сохранения обоих представлений.
См. Это jsFiddle. Это объяснит этот случай.
Могу ли я использовать такой же el
для обоих видов?
Это зависит от вас. Если вы избегаете связывания событий на основе одного и того же имени или имени класса в обоих представлениях, у вас не будет проблем. Но вы можете избежать использования одного и того же идентификатора, но настолько сложно избежать того же имени класса в обоих представлениях.
Так что для меня это выглядит @ Daniel Perez ответ более перспективным. Поэтому я собираюсь использовать его подход.
Все ваши события DOM, определенные в ваших представлениях, будут привязаны к этому элементу, если вы в порядке с этим, то, вероятно, это нормально. Другое дело, что HTML-код всех других представлений исчезнет, если вы когда-нибудь назовете 'remove' или' this. $ El.html (...) 'в одном из представлений. – j03w
Это не хороший подход, я бы сказал, добавьте 4 (столько, сколько вы хотите) дочернего div внутри и которые используют один для каждого представления. как сказал @ j03w, это приведет к проблеме в будущем –
хороших точек. И я не добавляю свой дом прямо в эль. Я добавляю дом в другие div, во всех взглядах. Поэтому я не использую 'this. $ El.html (...)' – user10