2012-07-22 29 views
0

我得到了几个不同的视图,这些视图大多是像(布局组件,布局,主视图)构建的。骨干:Singleton的意见?

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

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

像骨干视图的单身模式?

我该怎么做? 很简单:

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

够了吗?

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

回答

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他们并根据需要重新创建它们。

+0

使用.append不会导致事件引用丢失..。html实际上将html作为一个字符串,所以你甚至没有真正引用视图el .. – Stephen 2012-07-22 19:50:30

+0

@Stephen:但你不是除非你先清空,否则将使用'append'替换内容,效果将是相同的(http://jsfiddle.net/ambiguous/dcFDL/)。我认为你对'.html()'的工作原理感到困惑(http://jsfiddle.net/ambiguous/3ZJCq/)。 – 2012-07-22 20:14:02