3 Stimmen

Wie speichere ich Änderungen an meinen lokalen Daten in der Backbone.js-App?

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() ?

0voto

Möchten Sie die geänderten Daten in die .json-Datei zurückschreiben, oder möchten Sie die .json-Datei als Ausgangsdaten verwenden und danach Local Storage/IndexedDB/Web SQL/... für die Persistenz nutzen? Wie auch immer, Backbone ist ziemlich leichtgewichtig und unterstützt keine dieser Funktionen out-of-the-box. Sie müssen dies selbst schreiben, oder ein Plugin finden, das dies tut.

Das Schreiben in lokale Dateien sollte in HTML5-Apps möglich sein, indem man die FileSystem API , aber es könnte schwierig sein, es in allen Browsern zum Laufen zu bringen. Außerdem können Sie Dateien nur in einem speziellen Sandbox-Bereich des Dateisystems lesen und schreiben.

Für lokale Speicherung sehen Sie sich das Plugin backbone-localstorage.js an. Die Todo-Beispielanwendung, die in Backbone enthalten ist, verwendet ebenfalls dieses Plugin. Aus der Spitze von meinem Kopf, im Grunde, müssen Sie die fetch und sync Methoden Ihres Modells zu überschreiben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X