首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Meteor AutoForm设置必填可选字段

Meteor AutoForm设置必填可选字段
EN

Stack Overflow用户
提问于 2015-08-20 15:56:10
回答 1查看 1.5K关注 0票数 2

我有以下(简化的) SimpleSchema:

代码语言:javascript
复制
EventSchema = new SimpleSchema({
    eventType: {
        type: String
    },
    kicker: {
        type: String
    },
    kicker2: {
        type: String,
        optional: true
    }
});

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

代码语言:javascript
复制
{{#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}}

因为我在另一个不需要输入"kicker2“的autoForm中使用了这个模式,所以我将这个字段设置为可选。但在上面提到的表单中,此字段也是必需的。那么,如何覆盖特定表单中字段的可选设置呢?

我已经尝试了以下方法,但没有成功(required不会在HTML中呈现):

代码语言:javascript
复制
{{> afFieldInput name="kicker2" type="select" options=this required="required"}}

提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2015-08-25 01:30:59

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

代码语言:javascript
复制
EventSchema = new SimpleSchema({
    eventType: {
        type: String
    },
    kicker: {
        type: String
    },
    kicker2: {
        type: String,
        optional: function() {
            return (! this.isInsert)
        }
    }
});

所以它在update时是可选的,但在insert时不是(您可以使用任何方式对其进行自定义)。在表单之间使用不同验证规则的另一种方法是为给定表单创建特定的模式,然后使用autoForm(schema=yourSpecificSchema ...代替autoForm(collection="Meteor.users"。不要忘记注册一个帮助器,以便可以从表单访问您的模式。有关更多详细信息,请参阅官方文档:https://github.com/aldeed/meteor-autoform#non-collection-forms

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32112599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档