WJA
WJA

Reputation: 7004

Object not updating after localstorage get

In the following I try to test whether an object has been stored in localstorage, and if not to fill it with initial variables.

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

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

However, running the console at line "test line" returns {} despite that I filled TimerData with variables lines before.

$localstorage.getObject looks as follows:

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

My guess is that the operation is dealing with async problems (taking data from localstorage takes longer).

How can this be overcome?

Upvotes: 0

Views: 741

Answers (2)

jakeforaker
jakeforaker

Reputation: 1657

It looks like you are setting the value of "TimerData" to an empty object.

I think you can simplify this using standard js notation (you definitely dont need a special $localstorage adapter because you are using ionic). Ionic should respect standard js notation (although purely speculation on my part)

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

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

Upvotes: 1

Jegsar
Jegsar

Reputation: 520

Jakee1 has the right idea but but you asked about angular... Instead of

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

I would create local storage first, then assign a var to it.

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

This will only setup localStorage to {} if it doesn't exist ety

Upvotes: 1

Related Questions