2

J'ai construit une page simple qui a plusieurs onglets. Chaque onglet charge un flux (collection/liste) d'articles de Firebase et restitue des cartes sur la page. Tout fonctionne comme je le voulais jusqu'à ce que j'essaie de maintenir les flux visités dans indexeddb avec app-indexeddb-mirror.app-indexeddb-mirror avec Polymerfire

Voici ce que je l'ai fait:

<dom-module id="my-view1"> 
<template> 
    <style include="shared-styles"> 
    </style> 

    <paper-tabs id="tabs" 
       attr-for-selected="value" 
       selected="{{selectedFeed}}" 
       scrollable> 
     <template is="dom-repeat" 
        items="[[feeds]]" 
        as="feed"> 
      <paper-tab value="[[feed.key]]">[[feed.name]]</paper-tab> 
     </template> 
    </paper-tabs> 

    <firebase-query id="[[selectedFeed]]_feed" 
        app-name="myfirebaseapp" 
        path="/myfirebaseappdb/feed/[[selectedFeed]]" 
        data="{{articles}}"> 
    </firebase-query> 

    <app-indexeddb-mirror 
      key="[[selectedFeed]]" 
      data="[[articles]]" 
      persisted-data="{{persistedArticles}}"> 
    </app-indexeddb-mirror> 

    <template is="dom-repeat" 
       items="[[persistedArticles]]" 
       as="article"> 
      <paper-card image="[[article.image]]" alt="image"> 
       <div class="card-content"> 
        <h1 class="card-text">[[article.title]]</h1> 
        <h4 class="card-text">[[article.abstract]]</h4> 
       </div> 
      </paper-card> 
    </template> 

</template> 

<script> 
    Polymer({ 
     is: 'my-view1', 
     ready: function() { 
      this.feeds = [ 
       {name: "Feed1", key: "feed1"}, 
       {name: "Feed2", key: "feed2"}, 
       {name: "Feed3", key: "feed3"}, 
       {name: "Feed4", key: "feed4"} 
      ]; 
     } 
    }); 
</script> 

Ce que je veux faire est de cache chaque alimentation dans indexeddb comme une entrée (nom d'alimentation comme la clé et les données que la valeur), afin qu'ils puissent être chargé lorsque l'application est hors ligne. C'est en gros ce à quoi sert app-indexeddb-mirror, n'est-ce pas?

Cependant je ne peux pas obtenir ma tête autour du flux de données entre firebase-query et app-indexeddb-mirror, et je continue à recevoir l'entrée indexeddb écrasé/vidé lors du passage des onglets.

Y at-il quelque chose que je ne fais pas correctement? Merci.

+0

Lorsque les données de 'firebase-query' changent, le' app-indexeddb-mirror' mettra en cache les données. Cela signifie que lorsque vous changez de tabulation, les données changent parce que le 'path' de la requête' firebase-query' change, ce qui va à son tour amener l'élément 'app-indexeddb-mirror' à re-mettre en cache les données. –

+0

J'ai accroché un couple d'observateurs pour imprimer des journaux et il a vraiment ressemblé à @BenThomas vous avez dit. Je ne peux toujours pas comprendre comment le faire de la bonne façon? Pouvez-vous s'il vous plaît faire la lumière sur cela? Merci. – Xiang

+0

Une fois selectedFeed change, ne changerait-il pas immédiatement la clé de app-indexeddb-mirror (les liaisons de données sont synchrones)? Dans ce cas, le cache avec la clé précédente ne doit pas être effacé/vidé correctement? – Xiang

Répondre

0

J'ai résolu ce problème en échangeant firebase-query et app-indexeddb-mirror. Je n'ai jamais connu de séquences dans Polymer, cet ordre est également contre-intuitif.

+0

Ne m'a pas aidé. –

+0

Que voulez-vous dire? Comme indexedDB devrait être au-dessus de firebase-query? J'ai des problèmes pour voir les données dans les outils de développement chrom. Voyez-vous vos données là-bas? On dirait qu'il n'y a rien là – TheeBen