/ / otwarcie nowej zakładki powoduje utratę listy tabel w przepełnieniu stosu javascript w lokalnych magazynach - javascript, angularjs, local-storage, web-storage

otwarcie nowej karty powoduje utratę listy tablic w przepełnieniu stosu w javascriptu - javascript, angularjs, local-storage, web-storage

Moja aplikacja próbuje zapisać niektóre danemój lokalny magazyn, który działa poprawnie, gdy nie otwieram żadnej nowej karty ani okna, ale kiedy otworzę nową kartę, moja tablica traci wszystkie poprzednie przechowywane dane i przechowuje tylko aktualne dane. Proszę zasugeruj, co robię źle tutaj.

mój kod jest mniej więcej taki:

getCurrReqIdList = [];


localStorage.setItem("getCurrReqIdList", JSON.stringify(getCurrReqIdList));

var retrievedData = localStorage.getItem("getCurrReqIdList");
var getFinalReqIdList = JSON.parse(retrievedData);

if(getFinalReqIdList.length > maxCurrentConnectionLength) {
console.log("Hello");
getFinalReqIdList.shift();
getCurrReqIdList.shift();
localStorage.setItem("getCurrReqIdList",JSON.stringify(getFinalReqIdList));
}

Odpowiedzi:

0 dla odpowiedzi № 1

Post jest trochę zagmatwany, ale założę się, że masz linie

getCurrReqIdList = [];
localStorage.setItem("getCurrReqIdList", JSON.stringify(getCurrReqIdList));

działa za każdym razem, gdy ładujesz twoją stronę, aby zainicjować sklep. Tak więc po otwarciu nowej karty ładuje ona stronę i zastępuje wartość pamięci lokalnej pustą tablicą.

Twoja strona powinna działać w następujący sposób:

getCurrReqIdList = localStorage.getItem("getCurrReqIdList");
if(getCurrReqIdList) {
getCurrReqIdList = JSON.parse(getCurrReqIdList);
} else {
getCurrReqIdList = [];
localStorage.setItem("getCurrReqIdList", JSON.stringify(getCurrReqIdList));
}

0 dla odpowiedzi nr 2

Nie powinno się tak stać, ponieważ dane przechowywane w obiekcie localStorage będą również udostępniane między kartami.

Możesz mieć inny kod, który zresetuje lub usunie dane z localStorage, gdy tylko otworzysz nową kartę.


0 dla odpowiedzi № 3

Według: To

nie można udostępniać danych między wieloma kartami przy użyciu sessionStorage, ponieważ nowa strona jest nową sesją.

Musisz wymienić

setStorageType("sessionStorage")

przez

setStorageType("localStorage") // which is default