是否应该/骨干模型存储(临时)数据不在服务器上?

时间:2013-09-03 13:33:46

标签: backbone.js

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

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

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

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

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

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

谢谢!

修改

发现有人正在探讨类似的问题,并进行了很好的讨论:Custom Model Property in Template

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

1 个答案:

答案 0 :(得分: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对象中,而是存储在模型实例中的某个位置。这样,它将与您将与服务器来回同步的模型属性隐藏。