esta es una pregunta en dos partes de un novato JS.BackboneJS con XML ajax
Por lo tanto, yo estaba tratando de crear una aplicación de red troncal utilizando RequireJS siguiendo Thomas Davis's tutorial.
¿Cómo puedo crear colecciones de Backbone de una llamada ajax a un servidor que proporciona datos en XML? collections.fetch() parece estar esperando un backend JSON.
al intentar algunas cosas, terminé con el siguiente código, en el que la página no se actualiza al rellenar la colección "bookStore" desde Ajax success-callback.
Aquí está lo lejos que he llegado hasta ahora.
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); } });
Aquí, el éxito de devolución de llamada en la función "inicializar" parece ser el procesamiento de los datos adecuadamente y añadiendo a la colección. Sin embargo, la página no se actualiza.
Mientras estaba pasando a través de la consola de Firebug, la página se actualiza sin embargo. ¿Cómo resuelvo este problema?
nikoshr, Muchas gracias. Probé esto. Y funciona. – Karthik
Una pregunta adicional. ¿Debo realizar la búsqueda desde el código del enrutador? Si hago eso, cada vez que visito, incluido el botón de retroceso de navegador, el código termina recuperando la colección del servidor de nuevo. – Karthik
Probablemente pueda crear una instancia de la lista en su código init y pasarla a su enrutador, sin atar la búsqueda a las rutas. Tenga en cuenta que la forma recomendada es iniciar su aplicación con JSON serializado en su página. http://documentcloud.github.com/backbone/#FAQ-bootstrap – nikoshr