我正在通过一系列对象创建一个 tcomb-form,但我没有很多经验,老实说,我正在努力掌握它。
这是我们将要使用的数组结构:
export const AUDIT_CONTENT =
[
{type: "label", style: "title", group: "4.1", text: "field text here"},
{type: "label", style: "label", group: "4.1", text: "field text here"},
{type: "multi-checkbox", style: "checkbox", group: "4.1", text: "field text here"},
{type: "multi-checkbox", style: "checkbox", group: "4.1", text: "field text here"},
{type: "multi-checkbox", style: "checkbox", group: "4.1", text: "field text here"},
{type: "label", style: "label", group: "4.1", text: "field text here"},
{type: "multi-checkbox", style: "checkbox", group: "4.1", text: "field text here"}
]
带有的字段type: label
是要存储字段的对象,type: multi-checkbox
这些字段是要验证的字段。我按组对这些字段进行分组,因此组 4.1 的所有字段都在一个数组中,组 4.1 的字段也是如此,依此类推。
我设法通过执行以下操作动态生成这些字段:
myFields = () => {
for (var c = 0; c < groupedFields.length; c++) {
for (var i = 0; i < groupedFields[c].length; i++ ) {
if (groupedFields[c][i].type === 'multi-checkbox') {
fields[groupedFields[c][i].text] = t.maybe(t.enums({
OPTION_1 : "OPTION 1 Label",
OPTION_2 : "OPTION 2 Label",
OPTION_3 : "OPTION 3 Label",
OPTION_4 : "OPTION 4 Label"
}));
}
}
}
}
var fields = {};
myFields()
var myFormType = t.struct(fields);
现在我的问题从这里开始。我只生成接收值的字段,在这种情况下是带有 的字段type: multi-checkbox
,但是,我还想在我的表单中动态呈现字段,type: label
其顺序与我的AUDIT_CONTENT
数组相同,这些字段是对象,因此结果将是像这样:
"Field with style title": {
"Field with style label": [
{"Field with style multi-checkbox": "OPTION_1"},
{"Field with style multi-checkbox": "OPTION_3"},
],
"Other field with style label": [
{"Field with style multi-checkbox": "OPTION_4"},
{"Field with style multi-checkbox": "OPTION_2"},
]
}
此结果将存储在 Mongo 中。希望有人可以帮助我解决这个问题,并在此先感谢。