Data binding 聚合物1.x:与Firebase的深度链接数据绑定

Data binding 聚合物1.x:与Firebase的深度链接数据绑定,data-binding,firebase,polymer,polymer-1.0,firebase-polymer,Data Binding,Firebase,Polymer,Polymer 1.0,Firebase Polymer,我想通过Firebase文档元素将设置对象数据绑定到我的Firebase中的深度链接,如下所示: my-element.html <firebase-document location="<my-firebase>/users/uid/settings" data="{{settings}}"</firebase-document> ... <paper-input label="Name" value="{{settin

我想通过
Firebase文档
元素将
设置
对象数据绑定到我的Firebase中的深度链接,如下所示:

my-element.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: {},
...
<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', {});
  }
},

操作代码仅用于编辑现有记录。在端点处创建新记录不起作用(例如,在本例中为
/settings

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

  • 使用firebase value=“\u firebaseLoaded”
  • 上的
    测试是否存在初始firebase值
    
  • 如果没有,(有条件地)在
    \u firebaseload
    方法中添加一个
  • my-element.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: {},
    ...
    
    <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', {});
      }
    },
    
    
    ...
    ...
    设置:{
    类型:对象,
    通知:正确,
    值:{},
    }
    ...
    _firebaseLoaded:函数(){
    如果(!this.settings){
    this.set('settings',{});
    }
    },