Tôi đang cố gắng để tải một số dữ liệu vào một Bộ sưu tập Backbone từ một tập tin JSON địa phương, sử dụng mã rất cơ bản này:Tải dữ liệu vào bộ sưu tập Backbone từ tệp 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);
Trong báo cáo kết quả giao diện điều khiển, AllStudents
trống. Nhưng init.json
chắc chắn đang được tải. Có vẻ như sau:
[
{ text: "Amy", grade: 5 },
{ text: "Angeline", grade: 26 },
{ text: "Anna", grade: 55 }
]
Tôi đang làm gì sai?
CẬP NHẬT: Tôi cũng đã thử thêm một người biết lắng nghe reset
trên .fetch()
cuộc gọi, nhưng đó không phải sa thải một trong hai:
AllStudents.bind("reset", function() {
alert('hello world');
});
AllStudents.fetch({ url: "/init.json"});
Không cảnh báo xuất hiện.
UPDATE 2: Đang cố gắng kịch bản này (sao chép ở đây đầy đủ):
$(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);
});
});
Chỉ có một giao diện điều khiển tuyên bố thậm chí còn xuất hiện, trong fetch()
cuộc gọi thứ ba, và nó là một đối tượng có sản phẩm nào.
Hiện tại tôi hoàn toàn bối rối. Tôi đang làm gì sai?
Tệp JSON đang được phân phát dưới dạng ứng dụng/json, vì vậy không có gì liên quan đến điều đó.
Câu hỏi hay của nó. bạn nên sử dụng http://jsonlint.com/ để xác minh JSON –