在 Backbone.js 中使用 toJSON()

Using toJSON() in Backbone.js

我正在尝试找出如何正确使用 Backbone.js 中的 toJSON() 功能的在线教程。教程指出:

If you don't remember how toJSON works, consult the Backbone Model docs.

然而,当我跟随 link 并单击左侧栏中的 toJSON 时,它只谈论 JSON.stringify 而不是 toJSON()。谁能告诉我 toJSON() 函数的正确用法?

这只是一种方便的方法 - 例如,当使用 model.toJSON() 将模型传递到模板时,将从模型对象中提取模型属性以供模板使用。您可以轻松地传入 model.attributes 并且这也会进行插值......我猜 "toJSON" 名称的意思是 "create a representation of my model attributes as JSON" 而不是模型对象具有的所有其他属性。

toJSON model.toJSON([options])

Return a shallow 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.

(强调我的)

这里的关键是 toJSON returns model.attributescopy,可用于模板和许多其他事情上文提到的。使用这种方法的好处是你可以在不影响实际模型的情况下对其进行更改。

例如假设您需要在与服务器通信之前转换数据,例如删除货币分隔符或其他东西 - 您可以更新通过 toJSON 检索到的数据副本并发送到服务器而不影响实际属性。

这些情况主要出现在您使用 rivetsjs 等数据绑定库时,其中模型数据与 UI 紧密绑定。如果您删除实际模型属性中的货币分隔符,那么它会反映在 UI 中——这不好。希望对您有所帮助。