我有几个不同的视图,它们大多是像(布局组件,布局,主视图)一样构建的。
当我现在在不同视图之间切换时,整个页面必须被重新渲染。
最好至少缓存"窗口中的布局视图"并重新加载它们?
像骨干视图的单例模式?
我该怎么做? 很简单:
window.MainLayoutView || window.MainLayoutView = new MainLayoutView({ el: 'div.main' });
足够?
还有什么我需要考虑的吗?
答案 0 :(得分:2)
是的,还有更多需要担心的问题。如果您这样做:
window.MainLayoutView.render();
$(x).html(window.MainLayout.el);
// And later...
$(x).html(someOtherView.el);
// And later still...
$(x).html(window.MainLayout.el);
您会发现window.MainLayout
内的所有活动都已消失。如果要缓存实例化视图并将其交换进出,则必须安排delegateEvents
调用以在视图层次结构中一直重新绑定所有事件。
比较这两个例子的行为,你会发现问题:
delegateEvents
来电)。delegateEvents
来电)。一般情况下,您不需要尝试缓存视图,只需remove
,然后根据需要重新创建视图。