localStorage 使用角度获取值

新手上路,请多包涵

我看了一些例子,但似乎无法弄清楚。基本上我在离子应用程序中有一个联系表,允许用户联系列表所有者。

当他们提交表单时,我想将广告 ID 存储在本地存储中,这样他们就无法重复提交它。

我需要能够存储 json 数组然后检查结果。如果广告 ID 在会话存储中,则不显示表单,否则显示它。

我目前正在这样做,它似乎将广告 ID 存储在一个数组中,但是我如何循环检查一个 ID 是否存在?我尝试了 angular forEach,但结果是作为一个对象出现的。

     // Parse any JSON previously stored in allEntries
  var existingEntries = JSON.parse(localStorage.getItem("store_owner_ad_contacts"));
  if(existingEntries == null) existingEntries = [];

  var adId = {
    "id":$scope.adId
  };
  // Save allEntries back to local storage
  existingEntries.push(adId);
  localStorage.setItem("store_owner_ad_contacts", JSON.stringify(existingEntries));

  var values = JSON.parse(localStorage.getItem("store_owner_ad_contacts"));
  angular.forEach(values, function(value, key) {

  // ^ This is coming as an object how can I get the key value?

   if(value == adId){
   //form has been submitted before
   }else{
   // showformVar = true

    console.log(key + ': ' + value);
  });

我的存储看起来像这样

      [{"id":"100033"},{"id":"100035"},{"id":"1000336"}]

我如何获得id值? (例如 1000033)

原文由 limit 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 303
2 个回答

在您的循环中,您有一个对象,因此只需像访问对象一样访问 id 属性:object.yourProperty 或 object[yourProperty]

 var values = JSON.parse(localStorage.getItem("store_owner_ad_contacts"));

values.forEach(values, function(item, i) {

   // you get object like this {id: "100033"}
   // so to access id do like normal object

   if (item.id === '100033') {
     // do something
   }

});

原文由 Gatsbill 发布,翻译遵循 CC BY-SA 4.0 许可协议

正如我所见,这与角度本身无关(在角度中使用它并不意味着关系)。如果您有一组值并想搜索某些内容,则可以使用 Array.prototype.find 。如果您的数据是字符串化数组,那么您应该在解析它之前使用 JSON.parse

如果您打算在角度应用程序中使用 localStorage,那么最好使用 ngStorage 来处理字符串化和解析以及更多选项。

 var lsItems = [{"id":"100033"},{"id":"100035"},{"id":"1000336"}];

var item = lsItems.find(i => i.id === "100035");
console.log(item)

原文由 Morteza Tourani 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏