Ich baute eine einfache Seite, die mehrere Registerkarten hat. Jede Registerkarte lädt einen Feed (Sammlung/Liste) von Artikeln aus Firebase und rendert Karten auf der Seite. Alles funktioniert wie ich wollte, bis ich versuchte, die besuchten Feeds in indexeddb
mit app-indexeddb-mirror
zu persistieren.app-indexeddb-mirror mit Polymerfire
Hier ist, was ich getan habe:
<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>
Was ich tun möchte, ist Cache jedes Futter in indexeddb
als Eintrag (Feednamen als Schlüssel und die Daten als Wert), so können sie sein Wird geladen, wenn die App offline ist. Das ist im Grunde, was app-indexeddb-mirror
ist, oder?
Allerdings kann ich den Datenfluss zwischen firebase-query
und app-indexeddb-mirror
nicht verstehen, und ich bekomme indexeddb
Eintrag überschrieben/geleert beim Umschalten Tabs.
Gibt es etwas, was ich nicht richtig mache? Vielen Dank.
Wenn sich die Daten aus der 'Firebase-Abfrage' ändern, speichert der 'app-indexeddb-mirror' die Daten zwischen. Dies bedeutet, dass sich die Daten beim Wechseln zwischen Tabs ändern, da sich der 'Pfad' in der' Firebase-Abfrage' ändert, was dazu führt, dass das 'app-indexeddb-mirror'-Element die Daten erneut zwischenspeichert. –
Ich hakte ein paar Beobachter zum Drucken von Protokollen und es sah sicher wie @BenThomas Sie sagten. Ich kann immer noch nicht herausfinden, wie man das richtig macht? Kannst du bitte etwas Licht dazu bringen? Vielen Dank. – Xiang
Sobald selectedFeed sich ändert, ändert es nicht auch sofort den Schlüssel von app-indexeddb-mirror (Datenbindungen sind synchron)? In diesem Fall sollte der Cache mit vorherigem Schlüssel nicht gelöscht/geleert werden, oder? – Xiang