Javascript Meteor、自动表单、预填充输入

Javascript Meteor、自动表单、预填充输入,javascript,meteor,meteor-autoform,Javascript,Meteor,Meteor Autoform,一直在努力使用自动表单来预填充数据,尤其是在隐藏字段中 我尝试过很多方法,包括使用autoValue和defaultValue,但autoValue在服务器端进行验证,我需要从客户端的页面(路由器当前路由名称)中获取一个值,因此在.clean函数中查找时失败,defaultValue接受一个值,而不接受函数 如何将值传递给表单以预填充某些字段,而不显示字段?因此,我发布了这个问题,因为我一直在努力找到答案,并希望与大家分享 最后,您可以将doc属性传递给表单 其形式如下所示: {{> qu

一直在努力使用自动表单来预填充数据,尤其是在隐藏字段中

我尝试过很多方法,包括使用autoValue和defaultValue,但autoValue在服务器端进行验证,我需要从客户端的页面(路由器当前路由名称)中获取一个值,因此在.clean函数中查找时失败,defaultValue接受一个值,而不接受函数


如何将值传递给表单以预填充某些字段,而不显示字段?

因此,我发布了这个问题,因为我一直在努力找到答案,并希望与大家分享

最后,您可以将
doc
属性传递给表单 其形式如下所示:

{{> quickform 
   collection"mycollection" 
   id="formid" 
   type="method" 
   ...
   doc=mydoc
}}
然后您需要一个模板助手来创建文档:

Template.myform_template.helper({
   mydoc: function() {
      return {field1: value1, field2:value2 };
   }
})
您不必填写所有字段,只需填写您要预填写的字段,就像“更新”表单的工作方式一样

为了不在表单中显示此值,我尝试使用
省略字段
属性,但由于文档中的字段被删除,因此该属性不起作用。因此,我找到的唯一方法是使用

mycollection.attachSchema(new SimpleSchema({
   field1: {
       type: String,
       optional: false,
       autoform: {
            type: "hidden"
       }
   }
}))
给你


现在,在方法中调用schema.clean(doc)时,该值并不是真正的“已验证”,因为在模式中没有可验证的内容,所以您应该在方法调用中自己验证这些值。

当我需要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}}

我想这是个不错的选择。谢谢你的发帖。方法端的.clean(doc)函数如何解析这些值?PS:我正在寻找一种与quickform一起工作的解决方案,而不必定义字段和构建表单。我想你的解决方案也应该使用quickform,使用挂钩。
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) {
        }
    }
});