Backbone.js嵌套视图,一般想法

时间:2011-10-25 15:46:51

标签: javascript backbone.js

我希望得到关于如何使用backbone.js嵌套模型和视图的一般想法。

假设您有一堆对话框,每个对话框都有一堆标签。特定选项卡可能会在多个对话框中重复使用。每个选项卡都非常不同,您可能希望动态地向对话框添加新选项卡。

对每个标签都有不同的视图似乎合乎逻辑。此外,对话框应该是一个视图。我对模型和视图如何组合起来有点不清楚。

这是我的主要问题:

如果父视图想要呈现子视图,则可能需要实际执行以下操作:

var childView = new ChildView();

然后,使用jQuery

this.$("#listOfChildViews").append(childView.el);

为确保在添加之前清除列表,我们需要

this.$("#listOfChildViews").html("");

这是首选方式吗?对我来说似乎有点不好,因为它会删除整个列表,然后创建所有新对象并立即将它们添加到其中。如果本身没有“渲染”功能,可能会更好,而是“渲染初始”,然后简单地“添加”(用于添加新的子视图)。

抱歉这不太一致!

1 个答案:

答案 0 :(得分:5)

尼克,

我认为你应该投入Backbone Models的强大功能。

有一个Dialog模型(或者一个TabContainer,因为Dialog听起来更像是一个视图概念)。每个对话框都有一组选项卡(选项卡再次来自视图范围)。

在初始渲染中,在DialogView中,您将显示整个dialog.tabs集合,每个集合都在TabView中。

然后,在DialogView中,您可以侦听对话框模型的选项卡集合中的事件(添加,删除,重置),并仅添加/删除与更改的元素对应的视图。

您必须自己创建添加/删除视图的功能。 add函数将为添加的选项卡创建并呈现视图,并将其添加到此。$(“#listOfChildViews”)。

希望有所帮助。