Backbone:Singleton观点?

时间:2012-07-22 10:50:52

标签: javascript backbone.js singleton backbone-views

我有几个不同的视图,它们大多是像(布局组件,布局,主视图)一样构建的。

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

最好至少缓存"窗口中的布局视图"并重新加载它们?

像骨干视图的单例模式?

我该怎么做? 很简单:

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

足够?

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

1 个答案:

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

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

一般情况下,您不需要尝试缓存视图,只需remove,然后根据需要重新创建视图。