流星,自动表格,预填充输入

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) {
        }
    }
});