我希望得到关于如何使用backbone.js嵌套模型和视图的一般想法。
假设您有一堆对话框,每个对话框都有一堆标签。特定选项卡可能会在多个对话框中重复使用。每个选项卡都非常不同,您可能希望动态地向对话框添加新选项卡。
对每个标签都有不同的视图似乎合乎逻辑。此外,对话框应该是一个视图。我对模型和视图如何组合起来有点不清楚。
这是我的主要问题:
如果父视图想要呈现子视图,则可能需要实际执行以下操作:
var childView = new ChildView();
然后,使用jQuery
this.$("#listOfChildViews").append(childView.el);
为确保在添加之前清除列表,我们需要
this.$("#listOfChildViews").html("");
这是首选方式吗?对我来说似乎有点不好,因为它会删除整个列表,然后创建所有新对象并立即将它们添加到其中。如果本身没有“渲染”功能,可能会更好,而是“渲染初始”,然后简单地“添加”(用于添加新的子视图)。
抱歉这不太一致!
答案 0 :(得分:5)
尼克,
我认为你应该投入Backbone Models的强大功能。
有一个Dialog模型(或者一个TabContainer,因为Dialog听起来更像是一个视图概念)。每个对话框都有一组选项卡(选项卡再次来自视图范围)。
在初始渲染中,在DialogView中,您将显示整个dialog.tabs集合,每个集合都在TabView中。
然后,在DialogView中,您可以侦听对话框模型的选项卡集合中的事件(添加,删除,重置),并仅添加/删除与更改的元素对应的视图。
您必须自己创建添加/删除视图的功能。 add函数将为添加的选项卡创建并呈现视图,并将其添加到此。$(“#listOfChildViews”)。
希望有所帮助。