2016-07-14 10 views
1

Ich weiß, ich kann nicht speichern Daten in Datei mit Javascript, aber gibt es eine Lösung zum Erstellen von Konfigurationsdatei (JSON) auf dem lokalen Dateisystem, wo ich Daten schreiben kann, machen einige Änderungen wie Hinzufügen oder Entfernen von Objekten und speichern Sie diese. Ich möchte meine neuen Daten nicht verlieren, wenn ich das nächste Mal meine App starte. Irgendwelche Ideen?Erstellen Konfigurationsdatei - Fähigkeit zum Lesen und Speichern von Änderungen

Danke für Hilfe.

UPDATE

will ich es auf verschiedenen Computern verwenden.

+0

Ich möchte die Konfiguration auf dem lokalen Dateisystem beibehalten. – Verri

+0

Kann mongodb verwenden, um in JSON – Rikin

+1

[localStorage] (https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage) zu speichern, was Sie hier benötigen. Oder sehen Sie sich [FileSystem API] (http://www.html5rocks.com/en/tutorials/file/filesystem/) an. [Was hast du versucht] (http://whathaveyoutried.com)? – ManoDestra

Antwort

1

Sie können schreiben Sie sich ein SettingsService die Daten über den localstorage lesen und schreiben:

class SettingsEntry { 
    constructor(public key: string, public value: any) { } 
} 

export class SettingsService { 
    private SETTINGS_KEY = "__SETTINGS__"; 
    private _settings: Array<SettingsEntry>; 

    constructor() { 
     let settings = localStorage.getItem(this.SETTINGS_KEY); 

     if (settings && settings != undefined) { 
      this._settings = JSON.parse(settings); 
     } 
     else { 
      this._settings = []; 

      this.save(); 
     } 
    } 

    private indexOf(key: string): number { 
     for (let i = 0; i < this._settings.length; i++) { 
      if (this._settings[i].key == key) { 
       return i; 
      } 
     } 

     return -1; 
    } 

    private save() { 
     localStorage.setItem(this.SETTINGS_KEY, JSON.stringify(this._settings)); 
    } 

    get(key: string) { 
     let index: number = this.indexOf(key); 

     if (index >= 0) { 
      return this._settings[index].value; 
     } 

     return null; 
    } 

    set(key: string, value: any) { 
     let index: number = this.indexOf(key); 

     if (index >= 0) { 
      this._settings[index].value = value; 
     } 
     else { 
      this._settings.push(new SettingsEntry(key, value)); 
     } 

     this.save(); 
    } 
} 

Verwenden Sie es wie dies in Ihrer Komponenten oder Dienstleistungen:

_settingsService.set("time", new Date()); 

let time = _settingsService.get("time"); 

Arbeits Plunker zum Beispiel Verwendung

+0

Danke für die Antwort! Ich mag diese Idee und ich werde es 100% für persönliche Einstellungen verwenden, aber ich brauche etwas anderes für globale Einstellungen, wenn ich an einem anderen Computer arbeiten möchte. – Verri

Verwandte Themen