我有一个视图,我需要在同一页面重新渲染它。
如果我再次呼叫.render()
,则第一次渲染就会消失。
使用jQuery.extend()
克隆视图对象的结果相同。
var cloneView = $.extend(true, {}, view);
$('#container').append(cloneView.render().el);
我无法调用new View()
因为有各种视图类。
如何正确克隆视图?
答案 0 :(得分:1)
你不能只是克隆视图并按照你想要的方式使用它,因为在后台完成了很多工作,例如:
cid
代:您应用中视图的唯一ID。$el
代:视图主要DOM元素events
委托:视图事件委托因此,如果您坚持克隆视图,我建议您创建一个var cloneView = $.extend(true, {}, view);
的克隆,完全按照new View
的要求进行操作。
正如mu is too short
建议的那样,事件$.extend
将不起作用。
所以最好的方法是实例化new View
答案 1 :(得分:0)
盲目克隆任何视图都很危险。您需要检查模板和视图中的硬编码ID等细微内容,模板在不同位置重复使用时的样式等等。
我建议:
var my_view = new MyView({ el: $("#id") });
CloneView = MyView.extend({
// Stuff for CloneView
});
var my_view = new CloneView({ el: $("#id") });