localStorage值不想设置

时间:2018-02-12 11:08:19

标签: angularjs local-storage electron

localStorage中的设定值存在问题。我使用AngularJS和Electron。当我更新 refreshTime 时,错误不透明度的值将设置为null。为什么呢?

$scope.storageLang = localStorage.getItem("language");
$scope.storageMonitors = localStorage.getItem("monitors");
$scope.storageAlarm = localStorage.getItem("alarm");
$scope.storageErrors = localStorage.getItem("errors");
$scope.storageDomain = localStorage.getItem("domain");
$scope.storageOpacity = localStorage.getItem("opacity");
$scope.refreshTime = localStorage.getItem("refreshTime");

$scope.submit = function($event) {
      $event.preventDefault();
      localStorage.setItem("domain", $scope.storageDomain);
      localStorage.setItem("language", $scope.storageLang);
      localStorage.setItem("monitors", $scope.storageMonitors);
      localStorage.setItem("alarm", $scope.storageAlarm);
      localStorage.setItem("errors", $scope.storageErrors);
      localStorage.setItem("opacity", $scope.storageOpacity);
      localStorage.setItem("refreshTime", $scope.refreshTime);
};

在HTML中我的所有输入都有ng-model =" storageLang"等...

<form ng-submit="submit($event)" style="overflow:hidden">

    <div class="field">
        <label>{{ lang.domain }}</label>
        <input type="text" ng-model="storageDomain" value="{{ storageDomain }}">
    </div>

    <div class="field">
        <label>{{ lang.language }}</label>
        <select ng-model="storageLang">
            <option value="de" ng-selected="storageLang=='de'">Deutsch</option>
            <option value="en" ng-selected="storageLang=='en'">English</option>
            <option value="pl" ng-selected="storageLang=='pl'">Polski</option>
        </select>
    </div>

    <div class="field">
        <label>{{ lang.monitors }}</label>
        <select ng-model="storageMonitors">
            <option value="1" ng-selected="storageMonitors==1">1</option>
            <option value="2" ng-selected="storageMonitors==2">2</option>
            <option value="3" ng-selected="storageMonitors==3">3</option>
            <option value="4" ng-selected="storageMonitors==4">4</option>
        </select>
    </div>

    <div class="field">
        <label>{{ lang.alarm }}</label>
        <select ng-model="storageAlarm">
            <option value="1" ng-selected="storageAlarm=='1'">{{ lang.yes }}</option>
            <option value="0" ng-selected="storageAlarm=='0'">{{ lang.no }}</option>
        </select>
    </div>

    <div class="field">
        <label>{{ lang.errorslimit }}</label>
        <input type="number" ng-model="storageErrors" value="{{ storageErrors }}" min="10">
    </div>

    <div class="field">
        <label>{{ lang.opacity }}</label>
        <input type="number" ng-model="storageOpacity" value="{{ storageOpacity }}" min="25" step="5">
    </div>

    <div class="field">
        <label>{{ lang.refreshTime }}</label>
        <input type="number" ng-model="refreshTime" value="{{ refreshTime }}" min="10" step="1">
    </div>

    <button class="button expanded neutral">{{ lang.save }}</button>

</form>

2 个答案:

答案 0 :(得分:1)

问题是我使用value="{{ storageOpacity }}"而我只需要使用ng-model。除此之外,我需要使用parseInt来表示某些整数值...

答案 1 :(得分:0)

localStorage只能处理字符串,因此设置整数会导致问题。

使用像localForage这样的库,它具有相同的API,但会在Electron中使用IndexedDb并处理其他数据类型。