创建配置文件 - 读取和保存更改的能力

时间:2016-07-14 15:32:38

标签: javascript json angular

我知道我无法使用javascript将数据保存到文件中,但有没有任何解决方案可以在本地文件系统上创建配置文件(JSON),我可以在其中编写数据,进行一些更改,如添加或删除对象并保存。当我下次启动我的应用程序时,我不想丢失我的新数据。有什么想法吗?

感谢您的帮助。

更新

我想在不同的计算机上使用它。

1 个答案:

答案 0 :(得分:1)

您可以自己写一个SettingsService来通过localstorage读取和写入数据:

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();
    }
}

在您的组件或服务中使用它:

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

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

使用Plunker作为示例用法