我创建了一个表单,如果选中选项的复选框,则在表单提交时,它会将已检查输入的值传递给cuisineType
子模式中的字符串数组venueAttributes
。
我正在尝试构建等效的更新表单,我需要:
这是我到目前为止所做的,但不确定我是否走在正确的道路上。我应该在下划线中使用._find()
吗?
<label>Type of Cuisine</label>
{{#each venueAttributes.cuisineType}}
<div class="form-group" id="cuisineForm">
<div class="checkbox">
<label><input type="checkbox" checked="???" name="american" id="american" value="american">American</label>
</div>
<div class="checkbox">
<label><input type="checkbox" checked="???" name="french" id="french" value="french">French</label>
</div>
</div>
{{/each}}
感谢您提供的任何见解! 丹
答案 0 :(得分:1)
因为您无论如何都要在venueAttributes.cuisineType
上进行迭代,所以只需要一个子项:
<template name="cuisines">
<label>Type of Cuisine</label>
{{#each venueAttributes.cuisineType}}
<div class="form-group" id="cuisineForm">
<div class="checkbox">
<label><input type="checkbox" checked={{isChecked}} name={{this}}
id={{this}} value={{this}}>{{this}}</label>
</div>
</div>
</div>
{{/each}}
</template>
现在您需要isChecked
帮助程序来决定是否检查给定项目。
Template.cuisines.helpers({
isChecked: function(){
return ( checkedCuisines.indexOf(this) > -1 );
}
});
但是,问题!
你的问题是:
将已检查输入的值传递给字符串数组 (cuisineType,在placesAttributes subschema内)。
但是您在此模板中循环venueAttributes.cuisineType
,因此根据定义,该数组仅包含先前已检查过的项目。我使用不同的数组checkedCuisines
进行检查,但这意味着您在模板中迭代的对象必须包含所有菜肴类型,而不仅仅包括已检查过的菜单类型。在某个地方你需要一个集合或所有美食类型的数组来迭代。