У меня есть представление, и мне нужно повторно отобразить его на той же странице.
Если я снова вызову .render()
первый рендер исчезнет.
Клонирование объекта просмотра с помощью jQuery.extend()
имеет тот же результат.
var cloneView = $.extend(true, {}, view);
$('#container').append(cloneView.render().el);
Я не могу вызвать new View()
потому что существуют различные классы представления.
Как я могу сделать правильный клон представления?
Вы не можете просто клонировать свое представление и использовать его так, как хотите, потому что в фоновом режиме много работы, например:
cid
: уникальный идентификатор вашего представления в вашем приложении.$el
generation: основной элемент представления DOMevents
: передача событий Поэтому, если вы настаиваете на клонировании своего представления, я предлагаю вам создать клон этого var cloneView = $.extend(true, {}, view);
которые делают то, что делает new View
.
И поскольку mu is too short
предлагается, событие $.extend
не будет работать.
Таким образом, лучший способ сделать это - создать экземпляр new View
$.extend
будет знать, что делать с el
, событиями, содержащимися моделями / коллекциями и их событиями ...
Опасно идти слепо клонировать любую точку зрения. Вам нужно проверить тонкие вещи, такие как жестко закодированные идентификаторы в шаблоне и в представлении, стили шаблона при повторном использовании в разных местах и т.д.
Я бы предложил либо:
var my_view = new MyView({ el: $("#id") });
CloneView = MyView.extend({//Stuff for CloneView }); var my_view = new CloneView({ el: $("#id") });
div
. Если вы имеете в видуpage
подdiv
тогда да, но не визуализируете в один и тот же элемент DOM.