Backbone.js .save()JSON响应属性问题

时间:2013-02-20 22:48:47

标签: json backbone.js attributes response

所以我的问题是这个。

使用骨干来保存MYSQL数据库中的内容。

当我调用this.model.save()时,我遇到了一个非常奇怪的问题。

模型会将JSON响应保存为对象,而不会更新新值。

因此,我在开发工具中的属性看起来就像这样。

attributes:Object

0: Object

ID: "4"

Name: "TEST"

Title: "MEOW"

Stuff: "1"

When: "2013-02-14 22:17:14"

0不应该在那里。我确认json对象是有效的,所以我知道这不是问题。

1 个答案:

答案 0 :(得分:1)

看起来你的JSON响应实际上是一个包含单个元素的数组,而不是一个对象。

当Backbone调用0时,会创建属性model.set(response)set会将响应对象的所有键复制到属性哈希。如果将数组传递给{...},则会发生这种情况。

您应修复服务器以使用原始对象([{...}])而不是数组(var Model = Backbone.Model.extend({ parse: function(response) { return _.isArray(response) ? response[0] : response; } }); )进行响应。如果您无法更改服务器行为,则可以覆盖Model.parse以在客户端上解包响应:

{{1}}