我对Backbone相当陌生,并且存在以下问题:视图的主干更改模型
我有一个模型集合。
我有一个集合视图显示选项卡(集合中的每个模型的视图)。
我有一个模型(内容)的视图。
我有一个路由器与路由。
我想实现像http://jqueryui.com/demos/tabs/
我点击一个选项卡(集合型),然后要到模型传递到内容视图可能改变它,反映在集合中的变化的功能。
我想出了四种解决方案:
在路由器:
'switchCommunity': function(id) {
// (a) set new model attributes
this.view.community.model.set(communities.get(id));
// (b) replace model
this.view.community.model = communities.get(id);
// (c) a custom function of the view changes its model
this.view.community.changeModel(communities.get(id));
// (d) a new view
this.view.community = new View({
model: communities.get(id)
})
}
这里的问题是
(a)不反映 更改模型收集
(b)不触发(更改)事件,因为在视图中的 初始化函数绑定从来没有触发,因为它是 一个完全地新模式
(三)似乎是一个黑客对我
(d)每次我点击新视图中创建一个标签(这是一个 性能问题?)
什么是最好的初步实践吗?
我会尝试(d) - 如果先移除旧视图,这不会成为性能问题。 – swatkins 2011-12-21 15:27:06
(d)我覆盖了我的this.view.community是否足够,还是必须手动删除它? – Riebel 2011-12-21 15:32:38
这应该是足够的,只要老dom元素没有挂在身边,并有事件监听器绑定到他们,他们应该被垃圾收集。我会用萤火虫进行验证,但我认为这是正确的。 – swatkins 2011-12-21 15:34:07