1

使用 Backbone,我为我的集合中的每个模型进行了一些昂贵的计算,并且可能有很多模型。我想我想将结果存储在每个模型中set(),但我不想将它保存到服务器。这通常是一个坏主意吗?

如果这不好,将其保存在数组变量或模型(与缓存的服务器数据模型分开的计算结果模型)中是更好的做法吗?

为什么我认为这可能是个好主意?

  • 我永远不必考虑数组变量的范围/上下文。
  • 一旦我有了相关的模型,就不要查找数组内容。
  • 数据更加封装

为什么我认为这可能是个坏主意?

  • 将缓存的服务器数据与计算的本地数据混合。
  • 可能必须编写同步代码,以便save()仅保存服务器应获取的属性。

谢谢!

编辑

发现有人在探索类似的问题,并进行了很好的讨论:模板中的自定义模型属性

这似乎有一个我正在探索的非常彻底的答案:Backbone Computed Properties

4

1 回答 1

2

一种解决方案可能是覆盖模型的 toJSON 函数。

该函数由 save 函数调用以获取要发送回服务器的属性。

查看 toJSON 函数的文档基本上是说您可以将它用于您的特定目的:

Return a copy of the model's attributes for JSON stringification. This can be used for
persistence, serialization, or for augmentation before being sent to the server. 

我个人不会认为这是不好的做法,但这完全取决于所需的数量和计算本身。因此,这取决于您的具体用例。

此外,您不能将计算出的对象存储在 model.attributes 对象中,而是存储在模型实例中的某个位置。这样,它将隐藏在您将与服务器来回同步的模型属性中。

于 2013-09-03T14:03:53.523 回答