如何在 Polymer 中使用 app-localstorage-document

How to work with app-localstorage-document in Polymer

我正在尝试了解如何在 app-localstorage-document 中设置和检索值。我之前使用 iron-meta 元素工作过,并且是这样做的:

      <iron-meta id="meta" key="id" value="{{meta}}"></iron-meta>          

      Polymer({
         is: 'login-form',
         properties: {
           meta: {
            type: String,
            value: ''
           },
         },

         getValue: function() {
           this.meta = '100'
           var savedValue = this.$.meta.byKey('id');
           console.log(savedValue);
         }

      });

但是当我尝试使用 app-localstorage-document 进行类似操作时,它只是 returns:
Promise {[[PromiseStatus]]: "resolved", [[PromiseValue]] : 未定义}
我找不到任何关于如何使用这个元素的例子。也许有人可以帮助我。

      <app-localstorage-document id="meta" key="id" data="{{meta}}" storage="window.localStorage"></app-localstorage-document>

         Polymer({
          is: 'login-form',
           properties: {
             meta: {
               type: String,
               value: ''
             },
           },

           getValue: function() {
             this.$.meta.setStoredValue('id', '50');
             var savedValue = this.$.meta.getStoredValue('id');
             console.log(savedValue);
           }
         });

我自己还在研究这个元素。文档并不是那么直接。这是我目前所了解的。

问题更多是关于改变您对访问存储数据的看法。 app-localstorage-document 元素正在为您处理。

<app-localstorage-document id="meta" key="id" data="{{meta}}" storage="window.localStorage"></app-localstorage-document>

属性 "data" 与 "id" 的存储密钥同步。每当 "id" 更新时,分配给 "data" 的变量也会更新。这意味着在此对键 "id" 的更改将冒泡到变量 "meta" 中。

如果您需要访问存储中的信息,应该可以在 "meta" 变量中访问。

this.meta.name or {{meta.name}}
this.meta.id or {{meta.id}}

这意味着分配给 "data" 的变量应该是对象类型。

meta:{
        type:Object,
        value:{},
        notify:true
}

因此,如果您正在使用此元素,则没有理由直接访问本地存储。这就是该元素的用途。

基本思路是将内存中的数据同步到localStorage。

app-localstorage-document 将 'data' 存储在 localStorage 或 sessionStorage 中。数据的任何变化都会流回存储。在您的情况下,您只需将 {{meta}} 对象设置为所需的值,app-localstorage-document 将确保它存储在本地存储中。

由于您始终可以使用内存中的数据,因此您可能不会在同一元素中从 localStorage 中读取数据。但是,要读取其他元素中存储的数据,您可以使用 iron-localstorage 甚至直接使用键从 localStorage 读取。