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上的演示。