Meteor AutoForm设置需要的可选字段

时间:2015-08-20 07:56:10

标签: javascript meteor meteor-autoform

我有以下(简化)SimpleSchema:

EventSchema = new SimpleSchema({
    eventType: {
        type: String
    },
    kicker: {
        type: String
    },
    kicker2: {
        type: String,
        optional: true
    }
});

这样我就可以使用AutoForm生成插入表单。以下是它的简化版本:

{{#autoForm schema="EventSchema" type="method" meteormethod="addEvent"}}
    {{> afFieldInput name="eventType" options=getSubstitutionEventTypes type="select-radio-inline"}}

    {{> afFieldInput name="kicker" type="select" options=this}}

    {{> afFieldInput name="kicker2" type="select" options=this}}
{{/autoForm}}

由于我在其他autoForm中使用此Schema而我不必输入" kicker2",我已将此字段设置为可选。但是在上面提到的形式中,这个领域也是必需的。那么如何覆盖特定表单中字段的可选设置呢?

我已经尝试过以下操作,但它没有工作(要求不在HTML中呈现):

{{> afFieldInput name="kicker2" type="select" options=this required="required"}}

提前致谢!

1 个答案:

答案 0 :(得分:0)

你有一些技巧可以根据情况设置一个可选值,一个好的方法是在函数返回时设置可选值,给出如下内容:

EventSchema = new SimpleSchema({
    eventType: {
        type: String
    },
    kicker: {
        type: String
    },
    kicker2: {
        type: String,
        optional: function() {
            return (! this.isInsert)
        }
    }
});

因此它在更新时是可选的,但在插入时不是(您可以使用任何方法来自定义它)。 在表单之间使用不同验证规则的另一种方法是,只需为给定表单创建特定架构,然后使用autoForm(schema=yourSpecificSchema ...而不是autoForm(collection="Meteor.users"。不要忘记注册帮助程序,以便可以从表单中访问您的架构。您可以参考官方文档了解更多详情:https://github.com/aldeed/meteor-autoform#non-collection-forms