2012-05-17 67 views
0

根据Backbone.js的文档Model-parse,最好的办法执行以下操作:每当一个模型的数据由服务器返回用于扩展模型

解析被调用时, 取,并保存。

为了增加我已经加载的模型,我使用了Model.parse()。我通过使用fetch来为数据创建附加请求,然后使用该数据向现有模型添加属性来实现此目的。

实施例:

抓取对象是{age: 19}
后解析器将{age: 19, isAdult: true}

当我执行保存请求,在PUT请求我也有不需要的其他参数(例如isAdult)。我想要有原始模型(在PUT请求中没有附加参数)。

在Backbone中实现我的目标的最佳方法是什么?

+0

@AntoJs - 你的问题不是很清楚。我试图清除你想传达的想法。确保我的编辑符合您的问题。 – EBarr

+0

@EBarr你明白了我的问题。谢谢。 – antonjs

回答

2

如果我正确理解你的问题....

当使用保存发送模型的完整respresentation骨干会谈到服务器。由于文档所说的那样:

属性哈希(如设置)应包含的属性你 想改变 - 未提及将不会改变键 - 但是,一个完整的 资源的表示将被发送到服务器

所以默认行为是发送完整的模型。如果你想实现你自己的逻辑,你将不得不重写sync方法。通过扩大骨干码挖了一下,你会看到此评论上述sync

//覆盖该功能以更改骨干持续
//车型到服务器的方式。您将通过请求的类型和相关模型。

我会使用默认的同步实现作为我的出发点。

+1

@ muistooshort - 我同意白名单。从.net MVC/WebAPI的角度来看 - 它用模型粘合剂烘烤成蛋糕。虽然,我也理解从通话中移除无关数据的本能,特别是当通话频率较高时(较短的字符串来解析服务器端),或者您可以阻止许多K数据通过线路(大量不需要的文本?很少有K可以造成很大的差异?)。 – EBarr

+1

为了记录,我并不反对你。是的,这些字节在移动世界中相当快速地加起来。我实际上认为Backbone应该有'unparse'或'serialize'方法,sync可以使用而不是'toJSON',默认情况下''返回_.clone(this.attributes)'作为'toJSON',方法对于这个特定的用例会很好,并且可以对现有的'parse'提供很好的对称性。也许我应该做一个拉请求。 –