所以我的问题是这个。
使用骨干来保存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对象是有效的,所以我知道这不是问题。
答案 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}}