đây là câu hỏi hai phần của một newbie JS.BackboneJS với XML ajax
Vì vậy, tôi đã cố tạo ứng dụng đường trục bằng cách sử dụng requireJS bằng cách theo dõi Thomas Davis's tutorial.
Làm cách nào để tạo bộ sưu tập xương sống ra khỏi cuộc gọi ajax tới máy chủ cung cấp dữ liệu trong XML? collections.fetch() dường như đang mong đợi một chương trình phụ trợ JSON.
trong khi thử một số thứ, tôi đã kết thúc bằng mã sau, trong đó trang không làm mới khi điền tập hợp "bookStore" từ trong Ajax thành công gọi lại.
Đây là cách tôi đã nhận được cho đến nay.
var bookListView = Backbone.View.extend({ el: $("#books"), initialize: function() { thisView = this; $.ajax({ type: "GET", url: "books.xml", dataType: "xml", success: function (data) { console.log(data); $(data).find('book').each(function (index) { var bookTitle = $(this).find('name').text(); bookStore.add({ title: bookTitle }); console.log(seid); }); thisView.collection = bookStore; thisView.collection.bind('add', thisView.tryBind); } }).done(function (msg) { alert("Data retrieved: " + msg); }); this.collection = bookStore; this.collection.bind("add", this.exampleBind); this.collection.bind("refresh", function() { thisView.render(); }); /* // This one works! bookStore.add({ name: "book1" }); bookStore.add({ name: "book2" }); bookStore.add({ name: "book3" }); */ }, tryBind: function (model) { console.log(model); }, render: function() { var data = { books: this.collection.models, }; var compiledTemplate = _.template(bookListTemplate, data); $("#books").html(compiledTemplate); } });
Ở đây, sự thành công cuộc gọi trở lại trong "khởi tạo" chức năng dường như là xử lý dữ liệu đúng và thêm vào bộ sưu tập. Tuy nhiên, trang không được làm mới.
Trong khi tôi đang bước qua bảng điều khiển Firebug, trang được làm mới tuy nhiên. Làm thế nào để giải quyết vấn đề này?
nikoshr, Cảm ơn bạn rất nhiều. Tôi đã thử điều này. Và nó hoạt động. – Karthik
Một câu hỏi bổ sung. Tôi có nên thực hiện tìm nạp từ mã Bộ định tuyến không? Nếu tôi làm điều đó, mỗi khi tôi truy cập, bao gồm cả nút trình duyệt trở lại, mã sẽ kết thúc tìm nạp bộ sưu tập từ máy chủ từ đầu. – Karthik
Bạn có thể khởi tạo danh sách trong mã init của bạn và chuyển nó vào bộ định tuyến của bạn, không buộc phải tìm nạp các tuyến. Lưu ý rằng cách được đề xuất là khởi động ứng dụng của bạn với JSON được tuần tự hóa trong trang của bạn. http://documentcloud.github.com/backbone/#FAQ-bootstrap – nikoshr