Backbone更改View的模型

12 浏览
0 Comments

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) 每次我点击一个选项卡时都会创建一个新视图(这是一个性能问题吗?)

这里最好的做法是什么?

0