Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Backbone.js嵌套视图,概述_Javascript_Backbone.js - Fatal编程技术网

Javascript Backbone.js嵌套视图,概述

Javascript Backbone.js嵌套视图,概述,javascript,backbone.js,Javascript,Backbone.js,我希望了解您关于如何在backbone.js中使用嵌套模型和视图的一般想法 假设您有一组对话框,每个对话框都有一组选项卡。特定选项卡可能在多个对话框中重复使用。每个选项卡都非常不同,您可能希望动态地将新选项卡添加到对话框中 在我看来,每个选项卡都有不同的视图是合乎逻辑的。此外,该对话框应该是一个视图。我只是有点不清楚模型和视图是如何组合在一起的 这是我的主要问题: 如果父视图想要呈现子视图,它可能需要实际执行以下操作: var childView = new ChildView(); 然后,使

我希望了解您关于如何在backbone.js中使用嵌套模型和视图的一般想法

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

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

这是我的主要问题:

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

var childView = new ChildView();
然后,使用jQuery

this.$("#listOfChildViews").append(childView.el);
为了确保在添加之前清除列表,我们需要

this.$("#listOfChildViews").html("");
这是最好的方法吗?对我来说似乎有点糟糕,因为我撕掉了整个列表,然后创建了所有新对象,并将它们一次添加到其中。如果没有一个“render”函数本身,而是一个“renderInitially”然后简单地“add”(用于添加新的子视图),那么可能会更好

对不起,这不太连贯

尼克

我认为你应该加入骨干模型的力量

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

在初始渲染中,在DialogView中,将显示整个dialog.tabs集合,每个集合都在选项卡视图中

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

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


希望有帮助

谢谢你的回复,迪拉!我喜欢你的想法。还有几个更具体的问题。。。因为DialogView有一个对话框模型,而对话框模型有这个选项卡集合,对话框模型不会引用视图吗?这对我来说似乎很好,但这可以吗?换句话说,引用是:DialogView>DialogModel>TabCollection>TabView>TabModel——这种类型的设计可以吗,还是我缺少了一些大问题?引用是:DialogModel->TabsCollection->TabModel。DialogView->DialogModel。选项卡视图->选项卡模型。关于模型的视图,模型不知道视图。或者,您可以使用DialogView->TabsCollection、TabView->TabModel。您应该找到TabModel的其他名称,这些名称并非来自此信息的显示方式,而是更多地来自它包含的信息类型。不要忘记取消绑定所有嵌套视图。