如果位置不包含用户值,firebase-collection不会刷新firebase-auth登录数据

时间:2016-10-27 12:56:08

标签: polymer firebase-authentication firebase-polymer

如果以下代码中的位置(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登录后,用户值会发生变化并更改位置值,刷新来自的数据火力收集。

但是,如果位置路径不包含用户值,数据将不会显示在登录状态,你必须刷新页面才能实现。

到目前为止,我找到解决此限制的唯一方法是有点hackish。

我必须修改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 : "";
  }

它有效,但对我来说并不合适。

有更好的方式,更多的聚合方式吗?

由于

AskPolymer

1 个答案:

答案 0 :(得分:1)

您可以使用dom-iffirebase-collection上有条件地标记user

<template is="dom-if" if="[[user]]" restamp>
  <firebase-collection
    location="[[firebaseURL]]"
    data="{{messages}}">
  </firebase-collection>
<template>