Estoy intentando cargar algunos datos en una colección Backbone de un archivo JSON local, utilizando este código muy básico:¿Cargar datos en una colección Backbone del archivo JSON?
window.Student = Backbone.Model.extend({
});
window.Students = Backbone.Collection.extend({
model: Student,
});
window.AllStudents = new Students();
AllStudents.fetch({ url: "/init.json"});
console.log('AllStudents', AllStudents);
En el comunicado consola, AllStudents
está vacía. Pero init.json
definitivamente se está cargando. Se ve así:
[
{ text: "Amy", grade: 5 },
{ text: "Angeline", grade: 26 },
{ text: "Anna", grade: 55 }
]
¿Qué estoy haciendo mal?
ACTUALIZACIÓN: También he intentado añadir un oyente reset
encima de la llamada .fetch()
, pero eso no es disparar ya sea:
AllStudents.bind("reset", function() {
alert('hello world');
});
AllStudents.fetch({ url: "/init.json"});
No aparece ninguna alerta
.ACTUALIZACIÓN 2: Tratando este script (que se reproduce aquí en su totalidad): aparece
$(function(){
window.Student = Backbone.Model.extend({
});
window.Students = Backbone.Collection.extend({
model: Student,
});
window.AllStudents = new Students();
AllStudents.url = "/init.json";
AllStudents.bind('reset', function() {
console.log('hello world');
});
AllStudents.fetch();
AllStudents.fetch({ url: "/init.json", success: function() {
console.log(AllStudents);
}});
AllStudents.fetch({ url: "/init.json" }).complete(function() {
console.log(AllStudents);
});
});
Sólo un comunicado consola, incluso, en el tercer fetch()
llamada, y es un objeto vacío.
Ahora estoy absolutamente desconcertado. ¿Qué estoy haciendo mal?
El archivo JSON se sirve como application/json, por lo que no tiene nada que ver con eso.
Es una buena pregunta. deberías haber usado http://jsonlint.com/ para verificar tu JSON –