Meteor autoform表单隐藏字段不呈现defaultValue而不保存

时间:2015-05-30 22:03:07

标签: meteor meteor-autoform

我的autoform Schema中有两个隐藏字段,如下所示。我希望将这两个字段保存到其他字段,而不是将它们显示给app用户。但是我注意到autoform渲染的html中两个隐藏的字段没有任何价值,他们也不会将其他字段保存到DB。不确定我在这里可能缺少/错了什么?谢谢你的帮助

  Invoice = new SimpleSchema({
    clientid: {
      type: String,
      optional: true
    },
    total: {
      type: String,
      label: 'Total Amount',
      optional: true
    },
    tax: {
      type: String,
      label: 'Taxes',
      optional: true
    },
    category: {
      type: String,              
      optional: true,
      autoform: {
        type: "hidden",                
        label: false
      },
      defaultValue: 'Test Category'
    }
  });

  {{> quickForm id="invoiceForm" buttonContent="Insert" buttonClasses="btn btn-primary btn-sm" schema=Invoice type="method" meteormethod="saveInvoice"}}

3 个答案:

答案 0 :(得分:3)

我不认为您可以在您的aldeed Schema中有一个字段,它将在表单中呈现/保存为隐藏字段。因此,我建议您通过Sessions传递数据(您最初希望传递一个隐藏字段)。

例如,如果您使用的是autoform>> meteormethod保存表单,然后您可以在服务器方法中保存会话内容。如果您没有使用方法,那么您可能希望通过Autoform.hooks>>传递隐藏数据。 onSubmit

答案 1 :(得分:1)

在我看来,最好将与表单相关的逻辑保留到:模板,例如,您将以其他形式重用您的模式。

我建议您执行以下操作:

quickform

并使用... }, category: { type: String, optional: true, defaultValue: 'Test Category' } ... 子句(请注意,您可以指定多个字段,省略用逗号分隔):

omitFields

我注意到您使用{{> quickForm id="invoiceForm" buttonContent="Insert" buttonClasses="btn btn-primary btn-sm" schema=Invoice type="method" meteormethod="saveInvoice" omitFields="category, foo, bar, ..."}} 作为表单类型。如果要手动设置保存数据的方法,可以考虑在方法本身内指定默认值和自动值。它将为您提供更多自由和控制数据。

答案 2 :(得分:0)

您是否尝试过不将类别字段设为可选项?拥有defaultValue并将字段设为optional之间似乎存在概念性问题。