0

以下のコードの場所( firebaseURL ) にユーザー値 (auth.uid など) が含まれている場合、firebase-collectionデータはログイン時に firebase-auth から更新されます。Polymer 1.6.0を使用しています

<firebase-auth id="auth"
      location="[[firebaseURL]]"
      provider="{{provider}}" 
      params="{{params}}"
      user="{{user}}">
    </firebase-auth>

    <firebase-collection
      location="[[firebaseURL]]"
      data="{{messages}}">
    </firebase-collection>

これは、firebase-auth からのログイン時にユーザー値が変更され、それによって場所の値が変更され、firebase-collection からのデータが更新されるためです。

ただし、場所のパスにユーザーの値が含まれていない場合、ログイン時にデータが表示されないため、ページを更新する必要があります。

これまでのところ、この制限を回避する唯一の方法は、少しハックです。

次のように、firebase-collection の html コードを変更する必要があります。

<firebase-collection
      location="[[_location(user)]]"
      data="{{messages}}">
    </firebase-collection>

このように _location() 関数を追加して、firebase-collectionデータを強制的に更新し、ログイン時に表示する

  _location: function(u){
    // hacking - to trigger the update firebase-collection/document on-login / on-user-change
    return this.user ? this.firebaseURL : "";
  }

それは機能しますが、私には正しく見えません。

より良い方法、よりポリマー的な方法はありますか?

ありがとう

アスクポリマー

4

1 に答える 1

1

a を使用して、条件付きでdom-ifスタンプすることができます:firebase-collectionuser

<template is="dom-if" if="[[user]]" restamp>
  <firebase-collection
    location="[[firebaseURL]]"
    data="{{messages}}">
  </firebase-collection>
<template>
于 2016-10-27T14:31:34.457 に答える