【问题标题】:Multiple document in the same form with Meteor AutoForm使用 Meteor AutoForm 在同一表单中的多个文档
【发布时间】:2015-04-20 18:47:03
【问题描述】:

我有一些表单允许用户同时将多个文档添加到一个集合中,我想将其转换为使用 AutoForm,但我不知道如何最好地做到这一点。

例如,用户可以在学校创建一个班级。一个班级可以有一个名字、学科和老师。而不是一次只添加一个类的表单,我有允许同时添加许多类的行。这是一个简单的示例,它在我添加 AutoForm 之前的外观。这给了我三行,每行都有一个名称、主题和教师列。

<form class="class-form">
    <div class="table-row">
        <input type="text" name="name[]" placeholder="name">
        <input type="text" name="subject[]" placeholder="subject">
        <input type="text" name="teacher[]" placeholder="teacher">
    </div>
    <div class="table-row">
        <input type="text" name="name[]" placeholder="name">
        <input type="text" name="subject[]" placeholder="subject">
        <input type="text" name="teacher[]" placeholder="teacher">
    </div>
    <div class="table-row">
        <input type="text" name="name[]" placeholder="name">
        <input type="text" name="subject[]" placeholder="subject">
        <input type="text" name="teacher[]" placeholder="teacher">
    </div>

    <button type="submit">Save</button>
</form>

我可以为一个类创建一个模式并使用 AutoForm 一次为一个类创建一个表单,但是我如何使用 AutoForm 在一个表单中创建多个文档?

[这里的示例代码已经简化了很多。它使用 Select2 元素来选择学科和教师,实际代码中有更多的字段和 s。此外,随着行填满,我会自动添加更多行。我保持这个例子简单,稍后会解决这些问题]

【问题讨论】:

    标签: meteor meteor-autoform


    【解决方案1】:

    我不确定是否可以在一个表单中插入多个文档,但是您可以在一个表单中添加子文档数组,例如:

    ClassesCollection = new Mongo.Collection("classes");
    
    
    ClassSchema = new SimpleSchema({
        name: {
            type: String
        },
        subject: {
            type: String
        },
        teacher: {
            type: String
        }
    });
    
    
    ClassesSchema = new SimpleSchema({
        classes: {
            type: [ClassSchema]
        }
    });
    
    ClassesCollection.attachSchema(ClassSchema);
    

    这将为您生成一个表单,您可以在其中一次添加多个类,但是它们都将存储在“类”数组下的一个文档中。这可能是对您的架构的不受欢迎的更改。因此,您可以扩展 autoForm 以具有该功能或坚持使用您的自定义解决方案。

    【讨论】:

    • 我不能将它们全部作为数组放在一个文档中,但我可以使用 ClassesSchema 让 AutoForm 创建正确的表单,然后我会处理表单而不是 ClassesCollection我自己并将每个课程添加到ClassCollection。但很可能我只是无法使用 AutoForm。我认为我没有时间扩展 AutoForm 来支持这一点。
    • 我最终决定坚持我的自定义解决方案并使用没有 AutoForm 的 Collections2。
    猜你喜欢
    • 2015-09-15
    • 2015-10-06
    • 2015-02-13
    • 2017-04-22
    • 1970-01-01
    • 1970-01-01
    • 2015-09-20
    • 2016-04-29
    • 2016-01-09
    相关资源
    最近更新 更多