使用Backbone,我对我的Collection中的每个Model进行了一些昂贵的计算,并且可以有很多模型。我想我想用set()
将结果存储在每个模型中,但我不想将它保存到服务器上。这通常是个坏主意吗?
如果这不好,最好将它保存在数组变量或模型中(与缓存的服务器数据模型分开的计算结果模型)?
为什么我认为这可能是一个好主意?
为什么我认为这可能是一个坏主意?
save()
仅保存服务器应获取的属性。谢谢!
修改
发现有人正在探讨类似的问题,并进行了很好的讨论:Custom Model Property in Template。
这似乎有一个我正在探索的非常彻底的答案:Backbone Computed Properties。
答案 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对象中,而是存储在模型实例中的某个位置。这样,它将与您将与服务器来回同步的模型属性隐藏。