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
Backbone.js 一个集合可以包含不同类的模型对象吗?_Backbone.js_Backbone.js Collections - Fatal编程技术网

Backbone.js 一个集合可以包含不同类的模型对象吗?

Backbone.js 一个集合可以包含不同类的模型对象吗?,backbone.js,backbone.js-collections,Backbone.js,Backbone.js Collections,我刚刚开始在一个新的崩溃项目中使用backbone.js。我的应用程序有一个动态(数据驱动)用户菜单。每个菜单选项都是一组混合类型的图形/小表格。例如,Sales Overview菜单选项可以有一个包含两个饼图对象、两个折线图、一个条形图等的页面。我不知道前面的菜单选项是什么,也不知道每个菜单选项需要什么 我正在考虑通过扩展Backbone.model-PieModel、BarModel、DistributionModel等和相应的视图类来定义一系列通用模型“类”,这些视图类可以呈现类型为Pie

我刚刚开始在一个新的崩溃项目中使用backbone.js。我的应用程序有一个动态(数据驱动)用户菜单。每个菜单选项都是一组混合类型的图形/小表格。例如,Sales Overview菜单选项可以有一个包含两个饼图对象、两个折线图、一个条形图等的页面。我不知道前面的菜单选项是什么,也不知道每个菜单选项需要什么

我正在考虑通过扩展Backbone.model-PieModel、BarModel、DistributionModel等和相应的视图类来定义一系列通用模型“类”,这些视图类可以呈现类型为PieView、LineView等的对象。然后,我可以按照动态配置的定义将这些元素组合在一起,从而组装一个页面。通过动态配置,可以轻松地动态生成每个模型实例的数据url

我首先关心的是主干网是否支持混合模型类型的集合。这是由集合的“模型”属性引起的-它是否假设同质性?但它也表示,一个集合可以容纳一组有序的模型。。。。模型属性可以是多态的。。。获取集合中保存的“模型”的方法。我应该把它理解为“模型对象”吗

对我来说,“页面”实际上就是这些对象的集合。我想动态创建一个集合,并用不同模型类型的实例填充它。然后通过视图进行渲染。或者,使用各种模型对象的数组创建视图并渲染视图,同时绕过集合

我将感谢您对我概述的设计的投入,以及对主干网的良好参考,以及关于如何在混合模型案例中部署集合的清晰说明?也许有一种不同的,更聪明的方法来处理这种情况


谢谢。

我不确定我是否100%正确地理解了您的场景,但是,我不相信您以正确的方式考虑了这个问题

在我看来,您的模型应该包含数据,视图应该表示数据。因此,在销售上下文中,您可能有一个
SalesData
模型,它可以显示在
PieView
BarView
TableView
中。尝试将显示逻辑与数据完全分离-我认为图表的类型属于显示逻辑

使用上述方法,每个页面将包含一组不同的视图,如果需要,可以在主视图中包含这些视图。每个视图都有自己的模型(或集合,具体取决于数据的结构),然后可以使用常规主干方法对其进行更新/操作

据我所知,一个集合不可能包含不同类型的模型,但即使是这样,我也不推荐它,因为它会使代码复杂化很多

就学习资源而言,这里有几个:

-这一次非常彻底,但需要一些时间才能完成


-更快地让你进入正确的心态。

我不确定我是否100%正确地理解了你的情景,但是,我不相信你以正确的方式思考这个问题

在我看来,您的模型应该包含数据,视图应该表示数据。因此,在销售上下文中,您可能有一个
SalesData
模型,它可以显示在
PieView
BarView
TableView
中。尝试将显示逻辑与数据完全分离-我认为图表的类型属于显示逻辑

使用上述方法,每个页面将包含一组不同的视图,如果需要,可以在主视图中包含这些视图。每个视图都有自己的模型(或集合,具体取决于数据的结构),然后可以使用常规主干方法对其进行更新/操作

据我所知,一个集合不可能包含不同类型的模型,但即使是这样,我也不推荐它,因为它会使代码复杂化很多

就学习资源而言,这里有几个:

-这一次非常彻底,但需要一些时间才能完成


-更快地让您进入正确的思维模式。

在将普通对象传递到其加法器函数(例如,
添加
推送
)时,集合仅真正使用其
模型
属性。如果您查看一下,每个加法器函数都会通过
\u prepareModel
传递输入,该函数会检查输入是否是
主干.Model
的实例。如果不是,它将尝试使用集合的
模型
实例化一个新模型,否则它只返回未触及的输入

因此,只要您总是将真实模型对象添加到集合中,就可以使用不同的类型


但是,如果您计划使用作用于模型属性的聚合函数(例如,
pulk
),那么当函数尝试获取一种类型的模型中不存在的属性时,您可能会遇到错误(尽管我认为大多数情况下它只会默默地失败,这可能是您想要的)。如果您查看一下,每个加法器函数都会通过
\u prepareModel
传递输入,该函数会检查输入是否是
主干.Model
的实例。如果不是,它将尝试使用集合的
模型
实例化一个新模型,否则它只返回未触及的输入

因此,只要您总是将真实模型对象添加到集合中,就可以使用不同的类型

但是,如果您计划使用作用于模型属性的聚合函数(例如,
pulk
),那么