Estoy tratando de recuperar una colección de mi servidor. estoy usando la versión 0.3.3 (no el maestro de github) Sin embargo estoy corriendo en esta excepción:Red troncal: colección de recuperación desde el servidor
Uncaught TypeError: Cannot use 'in' operator to search for 'id' in {id=MyId, active=true}
jQuery.jQuery.extend._Deferred.deferred.resolveWith (jquery.js:869)
done (jquery.js:6591)
jQuery.ajaxTransport.send.callback
Ésta es la manera que he creado el error:
var MyModel = Backbone.Model.extend();
var MyCollection = Backbone.Collection.extend({
url: '/api/collection',
model: MyModel
});
var coll = new MyCollection();
coll.fetch();
Los elementos in/api/collection se analizan en JSON. Traté de devolverlos en varios formatos
["Id1", "Id2", ... ]
[{id: "Id1, somethingElse: "..."}, ...]
{id1: { id1s content}, id2: { ... }, ...}
Sin embargo el error era siempre la misma. ¿Qué hay de malo con este código?
[Editar] No ayuda a establecer un error a través de coll.fetch({error: errorFunc});
La excepción se mantiene igual.
[Edit2] Bueno, parece que todo funciona bien hasta collection.fetch()
llamadas collection.refresh()
con el objeto de respuesta. No he sobrescrito ninguna de estas funciones.
[Edit3] El error está en el método collection.add()
y la razón es que mis elementos son una lista de cadenas ... Mi servidor las envió incorrectas.
Usted dice que su servidor envió que están equivocados; ¿cómo los envías ahora para que funcione? Puede ser útil para otros (como yo) – Ariejan
en lugar de ["id1", "id2", ..., "idn"] el cliente espera [{"id": "id1"}, ... {"id" : "idn"}] –
Estoy literalmente haciendo eco de '[{"id": "100"}]' de mi servidor para probarlo ... sin embargo, todavía da el mismo error ... ¿Qué es? la parte del eco de los suyos como? –