编写我的第一个Backbone应用程序 - 遇到了一个困境,我无法选择哪个是最好的前进方式。
场景:用户单击编辑按钮,将加载新视图。方法如下。
renderEditView: function(){
if(my.namespace.view){
my.namespace.view.render();
}else{
my.namespace.view= new editView({model:my.namespace.model});
}
}
基本上,我将视图分配给命名空间变量并根据需要重新生成它。没有遇到任何问题。
但有些人主张在点击编辑按钮时使用new editView({model:xxx});
再次重新创建视图。我想知道哪一个是更好的做法,为什么?
P.S:我知道这个事件重影' BB应用程序中的问题,以及Derick Bailey提供的出色解决方案。但仍然希望了解这些方法之间的利弊。
答案 0 :(得分:0)
这确实是一种观点,因为如果您(如您所述)在每次想要重新渲染时决定实例化一个新视图时,任何一种方法都会起作用。重要的是避免通过创建新事件来复制要替换的每个实例的延迟事件
就个人而言,到目前为止,我已经使用过这两种策略并且从未遇到任何问题
重新使用视图时,我将视图作为属性绑定到呈现视图的控制器对象,这与您的操作非常相似。
从理论上讲,如果以前已经创建了一个视图,我没有理由重新实例化它。并不是说你真的需要一个新的实例,只是你想要重新渲染它。
<强>旁注强>
对于重新渲染视图,Backbone Marionette提供try {
instance.method1
instance.method2
instance.method3
} catch (XMLStreamException e){
} catch (SecurityException e){
} catch (IOException e){
}
,这些便利对象允许您执行以下操作:
regions
如果您决定每次都实例化一个新视图,这些区域会注意先前渲染的视图会被正确清理。