Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Forms 聚合物1.0:双向数据绑定:<;铁形态>;往返Firebase_Forms_Firebase_Polymer_Polymer 1.0_2 Way Object Databinding - Fatal编程技术网

Forms 聚合物1.0:双向数据绑定:<;铁形态>;往返Firebase

Forms 聚合物1.0:双向数据绑定:<;铁形态>;往返Firebase,forms,firebase,polymer,polymer-1.0,2-way-object-databinding,Forms,Firebase,Polymer,Polymer 1.0,2 Way Object Databinding,我想将iron表单的字段值双向数据绑定到Firebase节点(例如,表示用户定义的设置) settings.html <dom-module id="my-settings"> <template> <firebase-document location="[[firebaseUrl]]" data="{{form}}"> </firebase-document> <f

我想将
iron表单的字段值双向数据绑定到Firebase节点(例如,表示用户定义的设置

settings.html
<dom-module id="my-settings">
  <template>
    <firebase-document location="[[firebaseUrl]]"
                       data="{{form}}">
    </firebase-document>
    <form is="iron-form" id="form">
      <paper-checkbox id="history"
                      name="history"
                      on-change="_computeForm"
                      >Save history
      </paper-checkbox>
      <!-- ... -->
      <!-- All types of form fields go here -->
      <!-- ... -->
    </form>
  </template>
  <script>
    (function() {
      Polymer({
        is: 'my-settings',
        _computeForm: function() {
          this.form = this.$.form.serialize();
        }
      });
    })();
  </script>
</dom-module>
<dom-module id="my-settings">
  <template>
    <firebase-document location="[[firebaseUrl]]" data="{{form}}"></firebase-document>
    <paper-checkbox checked="{{form.history}}">Save history</paper-checkbox>
    <paper-input value="{{form.name}}" label="Name"></paper-input>
    <!-- Other form fields go here -->
  </template>
  <script>
    (function() {
      Polymer({
        is: 'my-settings',
        properties: {
          form: {
            type: Object,
            notify: true
          }
        }
      });
    })();
  </script>
</dom-module>

保存历史
(功能(){
聚合物({
是:‘我的设置’,
_computeForm:function(){
this.form=this.$.form.serialize();
}
});
})();
此表格需要:

  • 在发生更改时将其状态持久化到firebase(即,第一种方式绑定-客户端到firebase)和
  • 在加载时将表单字段设置为其保存的值(即,二次绑定-firebase到客户端-完成双向绑定)
问题
  • 请提供实现此目标的最佳实践解决方案

  • 是否可以绑定整个表单(声明性地?)并避免在加载时强制地设置每个表单字段值

  • 我鼓励使用伪代码或概念为我指明正确的方向


  • 不需要铁制形式
    。您需要将
    绑定到元素属性(表示表单)并将表单字段值绑定到该属性的子属性

    settings.html
    <dom-module id="my-settings">
      <template>
        <firebase-document location="[[firebaseUrl]]"
                           data="{{form}}">
        </firebase-document>
        <form is="iron-form" id="form">
          <paper-checkbox id="history"
                          name="history"
                          on-change="_computeForm"
                          >Save history
          </paper-checkbox>
          <!-- ... -->
          <!-- All types of form fields go here -->
          <!-- ... -->
        </form>
      </template>
      <script>
        (function() {
          Polymer({
            is: 'my-settings',
            _computeForm: function() {
              this.form = this.$.form.serialize();
            }
          });
        })();
      </script>
    </dom-module>
    
    <dom-module id="my-settings">
      <template>
        <firebase-document location="[[firebaseUrl]]" data="{{form}}"></firebase-document>
        <paper-checkbox checked="{{form.history}}">Save history</paper-checkbox>
        <paper-input value="{{form.name}}" label="Name"></paper-input>
        <!-- Other form fields go here -->
      </template>
      <script>
        (function() {
          Polymer({
            is: 'my-settings',
            properties: {
              form: {
                type: Object,
                notify: true
              }
            }
          });
        })();
      </script>
    </dom-module>
    
    
    保存历史
    (功能(){
    聚合物({
    是:‘我的设置’,
    特性:{
    表格:{
    类型:对象,
    通知:正确
    }
    }
    });
    })();
    
    验证如何?假设您想要验证表单。name@integratingweb可以使用纸张输入的图案或allowedPattern属性进行验证。参见elements.polymer-project.org上的演示。