使用 Meteor AutoForm 在同一表单中的多个文档
Multiple document in the same form with Meteor AutoForm
我有一些表单允许用户同时将多个文档添加到一个集合中,我想将其转换为使用 AutoForm,但我不知道如何做到最好。
例如,用户可以在学校创建一个class。 class 可以有姓名、学科和老师。而不是一次只添加一个 class 的表格,我有允许同时添加许多 class 的行。这是我添加 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>
我可以为 class 创建一个模式并使用 AutoForm 一次为一个 class 创建一个表单,但是我如何使用 AutoForm 以一个表单创建多个文档,如上?
[示例代码在这里已经简化了很多。它使用 Select2 元素来选择 subject 和 teacher 并且在实际代码中有更多的字段和 s。此外,当行填满时,我会自动添加更多行。我保持这个例子简单,稍后会解决这些问题]
我不确定是否可以在一个表单中插入多个文档,但是您可以在一种表单中添加子文档数组,例如:
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);
这将为您生成一个表单,您可以在其中一次添加多个 类,但是它们将全部存储在一个文档中的 "classes" 数组下。这可能是对您的体系结构的不受欢迎的更改。因此,您可以扩展 autoForm 以拥有该功能,也可以坚持使用您的自定义解决方案。
我有一些表单允许用户同时将多个文档添加到一个集合中,我想将其转换为使用 AutoForm,但我不知道如何做到最好。
例如,用户可以在学校创建一个class。 class 可以有姓名、学科和老师。而不是一次只添加一个 class 的表格,我有允许同时添加许多 class 的行。这是我添加 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>
我可以为 class 创建一个模式并使用 AutoForm 一次为一个 class 创建一个表单,但是我如何使用 AutoForm 以一个表单创建多个文档,如上?
[示例代码在这里已经简化了很多。它使用 Select2 元素来选择 subject 和 teacher 并且在实际代码中有更多的字段和 s。此外,当行填满时,我会自动添加更多行。我保持这个例子简单,稍后会解决这些问题]
我不确定是否可以在一个表单中插入多个文档,但是您可以在一种表单中添加子文档数组,例如:
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);
这将为您生成一个表单,您可以在其中一次添加多个 类,但是它们将全部存储在一个文档中的 "classes" 数组下。这可能是对您的体系结构的不受欢迎的更改。因此,您可以扩展 autoForm 以拥有该功能,也可以坚持使用您的自定义解决方案。