Я пытаюсь загрузить некоторые данные в коллекцию Backbone из локального файла 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);
В инструкции консоли AllStudents
пусто. Но init.json
определенно загружается. Это выглядит так:
[
{ text: "Amy", grade: 5 },
{ text: "Angeline", grade: 26 },
{ text: "Anna", grade: 55 }
]
Что я делаю неправильно?
ОБНОВЛЕНИЕ. Я также попробовал добавить прослушиватель reset
над вызовом .fetch()
, но не стрелял:
AllStudents.bind("reset", function() {
alert('hello world');
});
AllStudents.fetch({ url: "/init.json"});
Не появляется предупреждение.
ОБНОВЛЕНИЕ 2. Пробуйте этот script (воспроизведенный здесь полностью):
$(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);
});
});
В третьем вызове fetch()
появляется только один консольный оператор, и это пустой объект.
Теперь я абсолютно озадачен. Что я делаю неправильно?
Файл JSON обрабатывается как application/json, так что это не имеет никакого отношения к этому.