Backbone更改View的模型
- 论坛
- Backbone更改View的模型
12 浏览
Backbone更改View的模型
我对Backbone还比较新,有以下问题:
我有一个模型的集合。
我有一个显示选项卡的集合视图(集合中的每个模型都有一个视图)。
我有一个模型的视图(用于显示内容)。
我有一个具有路由的路由器。
我想要实现的功能类似于http://jqueryui.com/demos/tabs/
我点击一个选项卡(集合中的模型),然后想要将该模型传递给内容视图,可能对其进行更改并反映在集合中的更改。
我想出了四种解决方案:
在路由器中:
'switchCommunity': function(id) { // (a) 设置新的模型属性 this.view.community.model.set(communities.get(id)); // (b) 替换模型 this.view.community.model = communities.get(id); // (c) 视图的自定义函数改变其模型 this.view.community.changeModel(communities.get(id)); // (d) 新视图 this.view.community = new View({ model: communities.get(id) }) }
这里的问题是:
- (a) 不会反映模型在集合中的更改
- (b) 不会触发(change)事件,因为视图的initialize函数中的绑定从未触发,因为它是一个全新的模型
- (c) 对我来说似乎是一个hack
- (d) 每次我点击一个选项卡时都会创建一个新视图(这是一个性能问题吗?)
这里最好的做法是什么?