Sto cercando di caricare alcuni dati in una collezione backbone da un file JSON locale, utilizzando questo codice molto semplice:Caricare i dati in una raccolta Backbone dal file 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);
Nella dichiarazione console, AllStudents
è vuota. Ma lo init.json
è stato sicuramente caricato. Assomiglia a questo:
[
{ text: "Amy", grade: 5 },
{ text: "Angeline", grade: 26 },
{ text: "Anna", grade: 55 }
]
Cosa sto facendo di sbagliato?
UPDATE: Ho anche provato ad aggiungere un ascoltatore reset
sopra la chiamata .fetch()
, ma non è neanche sparare:
AllStudents.bind("reset", function() {
alert('hello world');
});
AllStudents.fetch({ url: "/init.json"});
appare Nessun avviso.
UPDATE 2: Cercando questo script (qui riprodotto per intero): appare
$(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);
});
});
una sola istruzione console anche, nel terzo fetch()
chiamata, ed è un oggetto vuoto.
Ora sono assolutamente sconcertato. Che cosa sto facendo di sbagliato?
Il file JSON viene servito come applicazione/json, quindi non ha nulla a che fare con quello.
È una bella domanda. dovresti aver usato http://jsonlint.com/ per verificare il tuo JSON –