我有几个不同的视图,它们主要是建立起来的(布局组件、布局、主视图)。
当我现在在不同的视图之间切换时,必须重新渲染整个页面。
至少在“窗口”中缓存布局视图并重新加载它们不是更好吗?
类似于主干视图的单例模式?
我该怎么做呢?很简单:
window.MainLayoutView || window.MainLayoutView = new MainLayoutView({ el: 'div.main' });
足够的?
还有什么我需要考虑的吗?
我有几个不同的视图,它们主要是建立起来的(布局组件、布局、主视图)。
当我现在在不同的视图之间切换时,必须重新渲染整个页面。
至少在“窗口”中缓存布局视图并重新加载它们不是更好吗?
类似于主干视图的单例模式?
我该怎么做呢?很简单:
window.MainLayoutView || window.MainLayoutView = new MainLayoutView({ el: 'div.main' });
足够的?
还有什么我需要考虑的吗?
是的,还有更多需要担心的。如果你做这样的事情:
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
它们并根据需要重新创建它们。