localStorage使用angular获取值

时间:2016-07-26 05:07:37

标签: javascript angularjs ionic-framework

我看了一些例子,但似乎无法解决这个问题。基本上我在离子应用程序中有一个联系表单,允许用户联系列表所有者。

当他们提交表单时,我希望将广告ID存储在本地存储中,以便他们无法重复提交反复提交。

我需要能够存储json数组,然后检查结果。如果广告ID在会话存储中,请不要显示其他形式的广告。

我目前正在执行此操作,它似乎将广告ID存储在数组中,但如何循环检查ID是否存在?我试过角度为每个,但结果作为一个对象。

    // 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)

3 个答案:

答案 0 :(得分:3)

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

let rating = 3.7;
let adjustedRating = (Math.round(rating * 2) / 2);

let tempRating = adjustedRating;
let starsToShow = new Array(5).fill(0);

for(let i=0; i<5; i++) {
  if (tempRating > 0.5) {
    tempRating -= 1.0;
    starsToShow[i] += 1.0;
  } else {
    starsToShow[i]+= 0.5;
    break;
  }
}

console.log(starsToShow);

答案 1 :(得分:1)

// inside forEach loop
var k = 0;
for(k in value) {
     // u can get the key in this way (k) 
}

答案 2 :(得分:1)

正如我所看到的,这不是关于角度本身(使用角度并不意味着关系)。如果您有一组值并想要搜索某些内容,那么您可以使用combine。 如果您的数据是字符串化数组,那么您应该先使用Array.prototype.find解析它。

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

&#13;
&#13;
JSON.parse
&#13;
&#13;
&#13;