이것은 JS 초보자가 전하는 두 가지 질문입니다.BackboneJS with XML ajax
그래서, Thomas Davis's tutorial을 따라 requireJS를 사용하여 백본 응용 프로그램을 만들려고했습니다.
어떻게 XML 데이터를 제공하는 서버에 Ajax 호출에서 백본 컬렉션을 만들 가야합니까? collections.fetch()는 JSON 백엔드를 기대하고있는 것 같습니다.
몇 가지 시도를하는 동안 Ajax 성공 콜백에서 "bookStore"컬렉션을 채울 때 페이지가 새로 고쳐지지 않는 다음 코드가 생겼습니다.
내가 지금까지 얼마나 멀리 얻었는지입니다.
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); } });
여기서, "초기화"기능에 성공 콜백 데이터를 제대로 처리 및 컬렉션에 추가 될 것으로 보인다. 그러나 페이지가 새로 고쳐지지 않습니다.
Firebug 콘솔을 단계별로 실행하면서 페이지가 새로 고침되었습니다. 이 문제를 어떻게 해결합니까?
nikoshr, 정말 고맙습니다. 나는 이것을 시험해 보았다. 그리고, 그것은 작동합니다. – Karthik
추가 질문이 1 개 있습니다. 라우터 코드에서 가져 오기를 수행해야합니까? 그렇게하면 브라우저 백 버튼을 포함하여 방문 할 때마다 코드가 서버에서 컬렉션을 다시 가져 오는 것입니다. – Karthik
초기화 코드에서 목록을 인스턴스화하고 라우트에 페치를 묶지 않고 라우터로 전달할 수 있습니다. 권장되는 방법은 페이지에 직렬화 된 JSON을 사용하여 앱을 부트 스트랩하는 것입니다. http://documentcloud.github.com/backbone/#FAQ-bootstrap – nikoshr