meteor-autoform:数组只包含一个条目
meteor-autoform: Array contains only one entry
这是我的问题。
我有一个必须链接到多个 SIRET 号码的组织。为此,我有一个自动表单(版本 7.0.0),它可以在创建组织时链接 0 个、一个或多个 SIRET 号码。
form-for-add
当我提交我的表格时,我的对象只包含一个 SIRET 号码,而我输入了 2 :
{ "label": "My Organization","siret": ["12345678910112"] }
这是我的代码:
schemas.js :
static organisation = new SimpleSchema({
"label": {
type: String,
label: function () { return i18n.__("schema.organisation.label"); },
autoform: {
autocomplete: "off"
},
optional: false
},
"siret": {
type: Array,
label: function () { return i18n.__("schema.organisation.siret"); },
optional: true,
minCount: 1,
maxCount: 5
},
"siret.$": {
type: String,
label: function () { return i18n.__("schema.organisation.siret"); },
optional: true,
min: 14,
max: 14,
},}, { tracker: Tracker })
添加 SIRET 的部分表格:
<div class="tab-pane fade" id="siret10">
{{#afEachArrayItem name="siret"}}
<div class="siret-input-container">
{{> afFieldInput name="siret"}}
</div>
<div class="siret-delete-button-container">
<button type="button" class="btn btn-sm btn-danger delete autoform-remove-item">
<svg alt="delete" width="100%" height="100%" fill="currentColor" aria-hidden="true"
focusable="false" class="overflow-visible">
<use xlink:href="/images/sprite.svg#picto_Delete"></use>
</svg>
</button>
</div>
{{/afEachArrayItem}}
<button type="button" class="btn btn-primary autoform-add-item"
data-autoform-field="siret"><span>{{__"organisationManagement.addSiret"}}</span></button>
</div>
感谢您的帮助!
您的字段是一个数组字段,但在 afEachArrayItem
循环中您始终 re-define 您的字段(来自 data-perspective)相同:
{{> afFieldInput name="siret"}}
提交此内容会将所有值覆盖到 siret[0]
。
但是,您需要将这些字段命名为 siret.0
、...、siret.10
等
为此,您可以在 afEachArrayItem
中使用 this.index
并将其包装到帮助程序中:
{{> afFieldInput name=(mergeStr "siret" this.index)}}
帮手可能是这样的:
Template.someTemplate.helper({
mergeStr(name, index) {
return `${name}.${index}`
}
})
为输入使用索引名称将使其有效。
这是我的问题。
我有一个必须链接到多个 SIRET 号码的组织。为此,我有一个自动表单(版本 7.0.0),它可以在创建组织时链接 0 个、一个或多个 SIRET 号码。
form-for-add
当我提交我的表格时,我的对象只包含一个 SIRET 号码,而我输入了 2 :
{ "label": "My Organization","siret": ["12345678910112"] }
这是我的代码:
schemas.js :
static organisation = new SimpleSchema({
"label": {
type: String,
label: function () { return i18n.__("schema.organisation.label"); },
autoform: {
autocomplete: "off"
},
optional: false
},
"siret": {
type: Array,
label: function () { return i18n.__("schema.organisation.siret"); },
optional: true,
minCount: 1,
maxCount: 5
},
"siret.$": {
type: String,
label: function () { return i18n.__("schema.organisation.siret"); },
optional: true,
min: 14,
max: 14,
},}, { tracker: Tracker })
添加 SIRET 的部分表格:
<div class="tab-pane fade" id="siret10">
{{#afEachArrayItem name="siret"}}
<div class="siret-input-container">
{{> afFieldInput name="siret"}}
</div>
<div class="siret-delete-button-container">
<button type="button" class="btn btn-sm btn-danger delete autoform-remove-item">
<svg alt="delete" width="100%" height="100%" fill="currentColor" aria-hidden="true"
focusable="false" class="overflow-visible">
<use xlink:href="/images/sprite.svg#picto_Delete"></use>
</svg>
</button>
</div>
{{/afEachArrayItem}}
<button type="button" class="btn btn-primary autoform-add-item"
data-autoform-field="siret"><span>{{__"organisationManagement.addSiret"}}</span></button>
</div>
感谢您的帮助!
您的字段是一个数组字段,但在 afEachArrayItem
循环中您始终 re-define 您的字段(来自 data-perspective)相同:
{{> afFieldInput name="siret"}}
提交此内容会将所有值覆盖到 siret[0]
。
但是,您需要将这些字段命名为 siret.0
、...、siret.10
等
为此,您可以在 afEachArrayItem
中使用 this.index
并将其包装到帮助程序中:
{{> afFieldInput name=(mergeStr "siret" this.index)}}
帮手可能是这样的:
Template.someTemplate.helper({
mergeStr(name, index) {
return `${name}.${index}`
}
})
为输入使用索引名称将使其有效。