我的Simple Schema中有这个:
"servicesSelected.0.sku" : {
type: String,
optional: true
},
基本上,我希望sku
的第一个数组项中的servicesSelected
键是一个字符串并且是可选的。
这是我的表单代码,用于复选框。
{{> afFieldInput class="track-order-change" type="checkbox" checkbox="true" template="" name="servicesSelected.0.sku" value="hdrPhotos"}}
我得到的错误是无效字段名称“servicesSelected.0.sku”
只要在架构和afFieldInput中删除数组索引,错误就会消失,但重点是验证数组索引0中的数据......
我将假设它无效,因为在JS中,如果使用点表示法,则不能将数字作为键名中的第一个字符。
但Simple Schema和Autoform不支持方括号表示法......
答案 0 :(得分:1)
我不确定SimpleSchema是否允许您验证这样的数组。可能需要进行自定义验证。
我理解这里的想法是数组的第一个元素可以具有sku
属性,但其他元素则不能。在这种情况下,请尝试以下方法:
servicesSelected: {
type: [selectedServiceSchema],
custom: function() {
for(var i=1; i<this.value.length; ++i) {
if(this.value[i].sku) return "SKU set in the wrong service";
}
},
},