【问题标题】:Backbone.js collections for options on a model模型选项的 Backbone.js 集合
【发布时间】:2013-02-16 21:04:12
【问题描述】:

我有一个表单,用户可以在其中创建新模型。该模型具有许多潜在属性,表单需要列出用户可以选择作为该模型“活动”的所有选项。

我想知道我应该如何管理选项的集合。我认为有两种不同的方式:

1) 将一个集合附加到带有表单的视图和模型上的另一个集合。当列表中的项目在视图中被选中时,这些项目会被复制到模型中的集合中。

2) 在模型上有一个集合,并将项目标记为“已选择”或“未选择”,因此我只有一个集合,并且在显示为该模型选择的内容时不需要比较两个不同的集合还有什么没有。

我认为第一个选项更“合适”,因为模型中只有合法地属于模型的数据,并且应该发送到服务器进行保存。如果我有整个“选定”的东西,我需要在保存时对这些数据进行排序,以确定要发送到服务器的内容。

【问题讨论】:

  • 您想为特定模型的属性创建一个 Backbone 集合?我会鼓励采用不同的方法,因为集合实际上是设计为模型集合,具有服务器端相关性。相反,我会在您的模型中指定一组可能的属性,或者从服务器响应中提取它们,将它们呈现在您的表单中,然后在创建时将选定的属性添加到您的新模型中。
  • 虽然它们可能不是我将在应用程序的其他地方保存和更新的完整模型,但属性/选项非常广泛,并且根据所选的“父”属性而有所不同。将它们直接放在模型中并没有真正起作用,并且在模型中有一堆请求来获取这些选项有点混乱。使用带有集合的“伪”模型可以更轻松地管理选项。
  • 除了下划线提供的枚举器之外,主干模型/集合的哪些功能有助于此? Backbone.Collection.update()?只是好奇。
  • 我不一定需要特定的 Backbone Collection 功能,而是这些“选项”代表我将在应用程序的其他地方使用的静态实体,而不仅仅是这个模型的形式。

标签: javascript backbone.js collections


【解决方案1】:

我建议您应该有两个独立的模型。一个您的父模型和一个选项模型。两者都有相应的集合。

您的父模型中将包含一个嵌套的 Options 集合。这是 Backbone 中基本的多对多实现。

我一直非常渴望让我的模型和系列反映真实的关系。在这里,如果您认为选项是具有自己用途的适当实体,那么我会考虑为它们创建模型。

【讨论】:

    猜你喜欢
    • 2011-10-31
    • 1970-01-01
    • 2013-07-24
    • 1970-01-01
    • 2012-09-11
    • 2011-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多