Ich tue eine lokale Backbone.js app und verwenden Sie einen lokalen Ordner namens Daten, um die ursprünglichen Daten zu setzen. Und in meinem Backbone.router, verwende ich Ajax, um die anfänglichen Daten wie folgt zu erhalten:
p = $.ajax({
url: 'data/todolist.json',
dataType: 'json',
data: {},
success: function(data) {
var approuter = new AppRouter({data: data});
Backbone.history.start();
}
})
Und die initialize
Methode in meinem AppRouter
ist wie folgt:
initialize: function(options){
this._data = options.data;
this._todos = new TodosCollection(options.data);
this._length = this._todos.length;
this._index = new CategoriesView({collection: this._todos});
},
In meiner Anwendung werde ich jedes Mal, wenn ich ein Element in meiner Backbone.View erstelle, lösche und aktualisiere, die Funktion this.model.destroy()
, this.collection.add()
ou this.model.set()
um mein Modell und meine Sammlung zu aktualisieren. Aber es scheint, dass diese Änderungen nicht in meinen ursprünglichen Daten gespeichert werden, die oben als "todolist.json" bezeichnet werden. Wenn ich die ganze Seite aktualisiere, zeigt die App immer noch die ursprünglichen Daten an. Was ich möchte ist, dass die Datendatei jedes Mal aktualisiert wird, wenn sich in meiner Ansicht etwas ändert. Wie soll ich das erreichen?
Eine weitere Frage: Was ist, wenn ich localStorage verwenden möchte, um diese Daten zu speichern? Muss ich dann nicht einen Ajax-Aufruf in meinem Router verwenden? Ich verwende einfach eine Backbone.Collection.fetch()
Methode in Router's initialize
Methode ganz am Anfang und nach dem Start der Anwendung wird der localStorage die Daten jedes Mal automatisch aktualisieren, wenn ich die this.model.destroy()
, this.collection.add()
ou this.model.set()
?