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

时间:2016-10-19 14:41:06

标签: session polymer local-storage polymer-1.0

我试图找出如何在app-localstorage-document中设置和检索值。我曾经使用过铁元素,并且这样做了:左

      <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类似的东西时,它只返回:
Promise {[[PromiseStatus]]:“resolved”,[[PromiseValue]]:undefined}
我找不到任何关于如何使用这个元素的例子。也许有人可以帮我解决这个问题。

      <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);
           }
         });

2 个答案:

答案 0 :(得分:3)

我自己还在研究这个元素。文档不是那么直接。这就是我到目前为止所理解的。

问题更多的是改变您对访问存储数据的看法。 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”的变量应该是Object类型。

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

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

答案 1 :(得分:3)

基本思想是将内存数据同步到localStorage。

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

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