用本地存储保存对象字段值,然后检索(使用obj键)

问题描述 投票:0回答:1

我只是想通过单击本地存储来保存数据对象和其中的字段(即userA.BaseMap.basemapSaved;)。

我后来想解析本地存储中保存的对象,获取该字段,并使用保存并收集的值更新我的API对象i.e。 object.data.fielduserA.BaseMap.basemapSaved;)。

// Here I am trying to initialize the variables
var currentUser;
var basemapSaved;
var userA[key] = {};

// This function I am getting the logged in username, I want to set this as the object key in userA i.e. userA[key]

function checkUser()  { 
  var node = document.querySelectorAll("span.username")[0];
  currentUser = node.textContent;
  var key = currentUser;
  console.log("current user is:" + key);
}

// This is just a handler to wait to my basemap gallery loads before trying to save

var basemapMod = document.getElementsByClassName("basemap")[0]; 
basemapMod.addEventListener('click', ()=>{ 
  setTimeout(
    function() {
      BaseMapSaver();
    }, 2000);
});

function BaseMapSaver() {
  savebtnBM.addEventListener('click', ()=>{ 
    checkUser();
    // This is where I get the data from my API to save, gathers fine
    basemapSaved = app.widget.Manager.Gallery.activeBasemap.Item.id;
    // Below I am trying to set it, at first without the object key but would like to use the key
    var saveMap = localStorage.setItem('userA', JSON.stringify(userA));

    console.log(userA);
  });
}
// Home button
var defaultViewHbtn = document.getElementById("home");

defaultViewHbtn.addEventListener('click', ()=>{

    checkUser();

    // Here I try to parse the value from local storage object
    const userAParseValue = JSON.parse(localStorage.getItem('userA'));

    // Errors with Uncaught TypeError: Cannot read property 'BaseMap' of undefined
    userBaseMap = userAParseValue.userA.BaseMap.basemapSaved;
    console.log(userBaseMap);

    app.widget.Manager.Gallery.activeBasemap.Item.id = {
      portalItem: {
          id: userA.BaseMap.basemapSaved // this is where I want to load saved value from local storage object
        }
      };
});
javascript ecmascript-6 local-storage arcgis-js-api
1个回答
0
投票

我想您将数据解析为错误的变量。试试这个:

const userA = JSON.parse(localStorage.getItem('userA'));
userBaseMap = userA.BaseMap.basemapSaved;
© www.soinside.com 2019 - 2024. All rights reserved.