-1

我想通过如下元素将settings对象数据绑定到我的 Firebase 中的深层链接:firebase-document

我的元素.html
<firebase-document location="<my-firebase>/users/uid/settings"
                   data="{{settings}}"</firebase-document>
...
<paper-input label="Name" value="{{settings.name}}"></paper-input>
<paper-input label="Email" value="{{settings.email}}"></paper-input>
...
settings: {
  type: Object,
  notify: true,
  value: {},
...

当我paper-input在应用程序的字段中输入name和的值时email,我希望看到 Firebase 值更新。但是,相反,它们不会更新。

完成这种深度链接数据绑定的最佳实践方法是什么?

编辑

我刚刚注意到有 35 个未解决的问题,firebase-element并且这个 codelab 似乎出于同样的原因绕过使用它。如果元素尚未完全准备好,请说明。此外,根据这里的语言,进口似乎不寻常:

想要使用 firebase 的组件应该依赖 firebase-element 并导入 firebase.html 以防止库重复。这样的组件不需要使用 Polymer 或 firebase-element,但为了方便,我们将导入和元素放在一个包中。

很难理解上面这段话想说什么。所以一个例子会有所帮助。

4

1 回答 1

0

OP 代码仅适用于编辑现有记录。在端点创建新记录不起作用(例如,/settings在这种情况下)。

为此,您必须在 Firebase 端点上不存在初始值时添加初始值,如下所示:

  1. 使用 测试初始 firebase 值是否存在on-firebase-value="_firebaseLoaded"
  2. 如果没有,(有条件地)在_firebaseLoaded方法中添加一个。
我的元素.html
<firebase-document location="https://my-firebase.firebaseio.com/settings"
  data="{{settings}}" on-firebase-value="_firebaseLoaded"></firebase-document>
...
<paper-input label="Name" value="{{settings.name}}"></paper-input>
...
settings: {
  type: Object,
  notify: true,
  value: {},
}
...
_firebaseLoaded: function() {
  if(!this.settings) {
    this.set('settings', {});
  }
},

此外,这篇文章可能有助于阅读

于 2016-03-15T08:54:17.027 回答