流星,自动表格,预填充输入
Meteor, autoform, pre filling input
一直在努力使用自动表单来预填充数据,尤其是在隐藏字段中。
我尝试了很多方法,包括使用autoValue和defaultValue,但是autoValue是在服务器端验证的,我需要从客户端的页面中获取一个值(Router当前路由名称)所以在获取时失败在 .clean 函数中查找,defaultValue 取值,不会取函数。
如何将值传递给表单以预填充某些字段而不显示该字段?
所以,我发布了这个问题,因为我一直在努力寻找答案并想分享。
最后,您可以将 doc
属性传递给表单
形式如下:
{{> quickform
collection"mycollection"
id="formid"
type="method"
...
doc=mydoc
}}
然后您需要一个模板助手来创建文档:
Template.myform_template.helper({
mydoc: function() {
return {field1: value1, field2:value2 };
}
})
您不必填写所有字段,只需填写您想预填的字段,就像 'update' 表单的工作方式一样。
为了不在表单中显示此值,我曾尝试使用 omitFields
属性,但这不起作用,因为文档中的字段已被删除。所以我找到的唯一方法是将模式中的字段类型声明为 'hidden' 和
mycollection.attachSchema(new SimpleSchema({
field1: {
type: String,
optional: false,
autoform: {
type: "hidden"
}
}
}))
给你。
现在,在方法中调用 schema.clean(doc) 时,该值并不是真正的 'validated',因为在架构中没有任何可验证的内容,因此您应该自己验证这些值方法调用。
当我需要为 atoform 预填充字段时,我使用 AutoFom.hooks 并且在 template.html 文件中我不添加这些字段。
TemplateFile.html
{{#autoForm schema="Schemas.Myschema" id="idForm" resetOnSuccess="true" type="method" meteormethod="server/insertCustomizedTemplate"}}
{{> afQuickField name='Field1'}}
{{> afQuickField name='Field2'}}
{{> afQuickField name='Field3'}}
<button href="" type="submit" class="btn btn-success">
Send
</button>
{{/autoForm}}
TemplateFile.js
AutoForm.hooks({
idForm: {
before: {
method: function(doc) {
doc.Dummyfield1 = 'Harcoded Value';
doc.Dummyfield2 = 'Harcoded Value';
return doc;
}
},
onSuccess: function(formType, result) {
},
onError: function(formType, error) {
}
}
});
一直在努力使用自动表单来预填充数据,尤其是在隐藏字段中。
我尝试了很多方法,包括使用autoValue和defaultValue,但是autoValue是在服务器端验证的,我需要从客户端的页面中获取一个值(Router当前路由名称)所以在获取时失败在 .clean 函数中查找,defaultValue 取值,不会取函数。
如何将值传递给表单以预填充某些字段而不显示该字段?
所以,我发布了这个问题,因为我一直在努力寻找答案并想分享。
最后,您可以将 doc
属性传递给表单
形式如下:
{{> quickform
collection"mycollection"
id="formid"
type="method"
...
doc=mydoc
}}
然后您需要一个模板助手来创建文档:
Template.myform_template.helper({
mydoc: function() {
return {field1: value1, field2:value2 };
}
})
您不必填写所有字段,只需填写您想预填的字段,就像 'update' 表单的工作方式一样。
为了不在表单中显示此值,我曾尝试使用 omitFields
属性,但这不起作用,因为文档中的字段已被删除。所以我找到的唯一方法是将模式中的字段类型声明为 'hidden' 和
mycollection.attachSchema(new SimpleSchema({
field1: {
type: String,
optional: false,
autoform: {
type: "hidden"
}
}
}))
给你。
现在,在方法中调用 schema.clean(doc) 时,该值并不是真正的 'validated',因为在架构中没有任何可验证的内容,因此您应该自己验证这些值方法调用。
当我需要为 atoform 预填充字段时,我使用 AutoFom.hooks 并且在 template.html 文件中我不添加这些字段。
TemplateFile.html
{{#autoForm schema="Schemas.Myschema" id="idForm" resetOnSuccess="true" type="method" meteormethod="server/insertCustomizedTemplate"}}
{{> afQuickField name='Field1'}}
{{> afQuickField name='Field2'}}
{{> afQuickField name='Field3'}}
<button href="" type="submit" class="btn btn-success">
Send
</button>
{{/autoForm}}
TemplateFile.js
AutoForm.hooks({
idForm: {
before: {
method: function(doc) {
doc.Dummyfield1 = 'Harcoded Value';
doc.Dummyfield2 = 'Harcoded Value';
return doc;
}
},
onSuccess: function(formType, result) {
},
onError: function(formType, error) {
}
}
});