0

我有几个不同的视图,它们主要是建立起来的(布局组件、布局、主视图)。

当我现在在不同的视图之间切换时,必须重新渲染整个页面。

至少在“窗口”中缓存布局视图并重新加载它们不是更好吗?

类似于主干视图的单例模式?

我该怎么做呢?很简单:

window.MainLayoutView || window.MainLayoutView = new MainLayoutView({ el: 'div.main' });

足够的?

还有什么我需要考虑的吗?

4

1 回答 1

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调用以重新绑定视图层次结构中的所有事件。

比较这两个示例的行为,您会发现问题:

通常,您不必费心尝试缓存视图,只需缓存remove它们并根据需要重新创建它们。

于 2012-07-22T19:41:46.023 回答