Estoy intentando cargar JSON (desde json_encode de php) en una colección Backbone JS. He simplificado el problema a:Backbone: Crear colección de JSON
var myJSON = '[{ "id":"1","name":"some name","description":"hmmm"}]';
var myCollection = new MyCollection(myJSON, { view: this });
Y:
MyObject = Backbone.Model.extend({
id: null,
name: null,
description: null
});
MyCollection = Backbone.Collection.extend({
model: MyObject,
initialize: function (models,options) { }
});
error:
Uncaught TypeError: Cannot use 'in' operator to search for 'id' in
problema similar: Backbone: fetch collection from server
Mi JSON sin duda parece estar en la derecha formato, ¿me falta algo obvio? Intenté usar simplemente id: "1" en lugar de "id" con el mismo resultado.
Sí, y si los datos se recuperan usando algo como el método $ .getJSON de jquery, invocará JSON.parse en él automáticamente. –
La documentación muestra pasar json directamente a la inicialización en al menos un ejemplo: http://documentcloud.github.com/backbone/#Collection-toJSON (aunque el propósito de esta demostración es cómo exportar json) – pws5068
Tenga en cuenta que no mencionan que la matriz que pasan al constructor de la colección ya ha sido analizada. La documentación probablemente contenga una pequeña aclaración allí, pero lo que hay que recordar es que JSON generalmente se pasa entre el servidor y el cliente en formato de cadena y necesita ser analizado después de recibirlo o ser codificado antes de enviarlo. – kinakuta