Meteor AutoForm - 带有数组索引的无效字段名称

时间:2014-08-25 10:30:26

标签: meteor

我的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不支持​​方括号表示法......

1 个答案:

答案 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";
    }
  },
},