在下文中,我尝试测试对象是否已存储在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获取数据需要更长时间)。
如何克服这个问题?
答案 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设置为{}