我正在尝试将JSON(从php的json_encode)加载到Backbone JS集合中。我已经简化了问题:Backbone:从JSON创建集合
var myJSON = '[{ "id":"1","name":"some name","description":"hmmm"}]';
var myCollection = new MyCollection(myJSON, { view: this });
和:
MyObject = Backbone.Model.extend({
id: null,
name: null,
description: null
});
MyCollection = Backbone.Collection.extend({
model: MyObject,
initialize: function (models,options) { }
});
错误:
Uncaught TypeError: Cannot use 'in' operator to search for 'id' in
类似的问题:Backbone: fetch collection from server
我的JSON肯定似乎是正确的格式,我错过了什么明显?我试图使用简单的ID:“1”,而不是“ID”,结果相同。
是的,如果数据是使用类似jquery的$ .getJSON方法检索的,它会自动调用JSON.parse。 – 2012-01-16 06:39:14
该文档至少在一个示例中显示直接传递json到初始化:http://documentcloud.github.com/backbone/#Collection-toJSON(即使此演示的目的是如何导出json) – pws5068 2012-01-16 08:35:56
请注意,他们没有提及它们传递给集合构造函数的数组已经被解析。该文档可能在那里稍作澄清,但需要记住的是JSON通常以字符串格式在服务器和客户端之间传递,并且需要在发送之前在接收或字符串化之后进行解析。 – kinakuta 2012-01-16 08:54:01