在下文中,我尝试测试对象是否已存储在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);
},


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

如何克服?

最佳答案

Jakee1有一个正确的主意,但您询问了有关角度的问题...
代替

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

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

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


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

07-25 20:44