在localstorage获取

时间:2015-07-10 15:12:02

标签: javascript angularjs local-storage

在下文中,我尝试测试对象是否已存储在localstorage中,如果没有用初始变量填充它。

var TimerData = $localstorage.getObject("TimerData", "{}");

if(!TimerData.hasOwnProperty("timerState")) {
   TimerData["timerState"]             = "run";
   TimerData["timeOutMode"]            = false;
   TimerData["timeOutStartDate"]       = null;
   console.log("test line", TimerData)
};

但是,在“测试行”行运行控制台会返回{},尽管我之前用TimerData填充了变量行。

$localstorage.getObject如下所示:

getObject: function(key, fallBack) {
      return JSON.parse($window.localStorage[key] || fallBack);
},

我的猜测是该操作正在处理异步问题(从localstorage获取数据需要更长时间)。

如何克服这个问题?

2 个答案:

答案 0 :(得分:1)

看起来你正在设置" TimerData"的值。一个空的物体。

我认为你可以使用标准的js表示法来简化它(你绝对不需要特殊的$ localstorage适配器,因为你正在使用离子)。离子应该尊重标准的js表示法(尽管我纯粹是猜测)

            var TimerData = localStorage.get("TimerData");

            if (!TimerData.timerState) {
                TimerData["timerState"] = "run";
                TimerData["timeOutMode"] = false;
                TimerData["timeOutStartDate"] = null;
                console.log("test line", TimerData)
            }

答案 1 :(得分:1)

Jakee1有正确的想法,但你问了角度...... 而不是

var TimerData = $localstorage.getObject("TimerData", "{}");

我首先创建本地存储,然后为其分配一个var。

$localStorage.$default({TimerData: {}});
var TimerData = $localStorage.TimerData;

如果它不存在,则只会将localStorage设置为{}

相关问题