Как проверить, был ли ключ сохранен ранее или нет в app-localstorage-document?

Я пытаюсь выяснить, как проверить, пуст ли ключ в app-localstorage-document или нет. Ранее я использовал iron-localstorage, в котором было событие on-iron-localstorage-load-empty, которое было вызвано, когда ключ пуст.

Я использовал следующий код для iron-localstorage:

<iron-localstorage name="my-app-storage" value="{{cat}}" on-iron-localstorage-load-empty="initializeDefaultCat" on-iron-localstorage-load="loadCatFromLocal"></iron-localstorage>

initializeDefaultCat(){
    //some code to initialize the key
}

loadCatFromLocal(){
   //some code to load the key when webpage opens
   // and manipulate the data as per requirement
}

Я попробовал следующее, используя app-localstorage-document:

<app-localstorage-document key="CatValue" data="{{cat}}"></app-localstorage-document>

class MyApp extends Polymer.Element{
   static get is(){return 'my-app';}
   static get properties(){
     return{
       cat:{
         type: String,
         value: ""
       }
     };
   }

   zeroValue(){
     this.set('cat',"a cat");
   }
}

zeroValue() нужно откуда-то вызывать, но я не знаю, откуда его вызывать. В случае iron-localstorage функция вызывалась из самого тега компонента с помощью событий, а в app-localstorage-document такого события нет. Все, что я хочу сделать, это инициализировать ключ, когда ключ сохраняется в первый раз или когда ключ пуст, и загрузить ключ при загрузке страницы, чтобы манипулировать данными в соответствии с требованиями приложения.


person Amanshu Kataria    schedule 29.07.2017    source источник


Ответы (1)


 static get properties(){
   return{
     cat:{
       type: String,
       value: "a cat"
       observer: "zeroValue",
     }
   };
 }

 zeroValue(newValue){
  if (newValue) { this.set('cat', newValue; } 
  else          { this.set('cat',"a cat"); }
 }

Я сам не использовал этот элемент. Возвращает ли value значение null, если ключ в localStorage не существует? Если это не так, вам не нужен метод zeroValue, а вместо этого установите значение по умолчанию.

person Rickard Elimää    schedule 30.07.2017
comment
Ну, это не работает, как ожидалось. zeroValue() вызывается дважды подряд. Так что не удачная реализация. - person Amanshu Kataria; 30.07.2017