Polymer 聚合物1.0:强制为<;重新加载浏览器;firebase系列>;要自动填充的数据 目标

Polymer 聚合物1.0:强制为<;重新加载浏览器;firebase系列>;要自动填充的数据 目标,polymer,polymer-1.0,Polymer,Polymer 1.0,当我登录并注销我的应用程序时,我希望自动从元素加载数据,如下所示 my-settings.html <firebase-document location="[[app.firebase.settings]]" data="{{app.settings}}"> </firebase-document> <firebase-document location="[[app.firebase.settings]]"

当我登录并注销我的应用程序时,我希望自动从
元素加载数据,如下所示

my-settings.html
<firebase-document location="[[app.firebase.settings]]"
                   data="{{app.settings}}">
</firebase-document>
<firebase-document location="[[app.firebase.settings]]"
                   data="{{settings}}">
</firebase-document>
<paper-input value="{{settings.email}}"
             label="Email">
</paper-input>
...
<script>
  (function(){
    Polymer({
      is: 'my-settings',
      properties: {
        app: {
          type: Object,
          notify: true
        },
      settings: {
        type: Object,
        notify: true,
        observer: '_settingsChanged'
      },
      _settingsChanged: function() {
        this.set( 'app.settings', this.settings);
      }
    });
  })();
</script>
实际行为 从登录状态,如果我注销然后重新登录,
app
对象根本不包含
settings
属性。换言之:

console.log 重新加载浏览器作为解决方法 作为一名黑客,如果我首先重新加载浏览器,我就能得到预期的结果。注销>重新加载浏览器>登录将产生以下所需结果:

console.log 问题: 在注销>登录后,我应该尝试通过什么方法让
设置
属性自动填充我的
应用程序
对象,而不必作为中间步骤重新加载?i、 例如,注销>重新加载浏览器>登录


这可能是我不理解的生命周期或注册问题吗?还是别的什么?(我只需要一个大致的指导。)

尝试设置而不是app.settings来修复值更新问题。 为了隐藏这些值,可以使用dom if模板并在Firebase上设置安全读/写规则

<template is="dom-if" if="[[user]]">
  <firebase-document 
    location="[[app.firebase.settings]]"
    data="{{settings}}">
  </firebase-document>
</template>

<firebase-auth location="[[app.firebase]]" user="{{user}}"></firebase-auth>

,工作的代码如下:

my-settings.html
<firebase-document location="[[app.firebase.settings]]"
                   data="{{app.settings}}">
</firebase-document>
<firebase-document location="[[app.firebase.settings]]"
                   data="{{settings}}">
</firebase-document>
<paper-input value="{{settings.email}}"
             label="Email">
</paper-input>
...
<script>
  (function(){
    Polymer({
      is: 'my-settings',
      properties: {
        app: {
          type: Object,
          notify: true
        },
      settings: {
        type: Object,
        notify: true,
        observer: '_settingsChanged'
      },
      _settingsChanged: function() {
        this.set( 'app.settings', this.settings);
      }
    });
  })();
</script>

...
(功能(){
聚合物({
是:‘我的设置’,
特性:{
应用程序:{
类型:对象,
通知:正确
},
设置:{
类型:对象,
通知:正确,
观察员:“_settingsChanged”
},
_设置更改:函数(){
this.set('app.settings',this.settings);
}
});
})();
my-controller.html
<my-settings id="settings"></my-settings>
...
_handleLogout: function() {
  this.$.settings.set('settings', {});
},

...
_handleLogout:函数(){
这是$.settings.set('settings',{});
},

看一看。似乎是路径绑定问题。@AnkitPopli:谢谢+1。但我不确定这是否是问题所在,因为根据这个答案,声明性路径绑定应该按预期自动更新。@AnkitPopli:我很抱歉。这是(显然)一个路径绑定问题。请参阅和。但我不知道当路径绑定被删除时它为什么会工作。没问题,伙计。我也不确定。这可能是一个不工作的特殊用例?也许有人可以解释为什么不工作?或者可能发生了什么?这似乎有效。()只是不知道为什么。@Mowzer Super!默认情况下并没有深度绑定,我想,我会看看是否有文档。这可能是一个不工作的特殊用例?也许有人可以解释为什么不工作?或者可能会发生什么?这可能是一个不工作的特殊用例?也许有人可以解释为什么不工作?或者可能会发生什么n?这段视频有帮助吗?罗布·多德森的多播电视系列插曲。@Glenvanderen:罗布的视频……有帮助吗?绝对有帮助。他们总是如此!也非常感谢。但这与这个特定的问题有关吗?没有那么多。因为我不想在这个问题上绑定数组。你不同意吗?是的,他们总是如此!在他的例子中,他使用了Arra但对于一个物体来说,这是相同的解释。请检查该部分的注释。
<my-settings id="settings"></my-settings>
...
_handleLogout: function() {
  this.$.settings.set('settings', {});
},