我实际上是在尝试做两件事:
有2个下拉列表,
a)第一个将填充产品,而
b)第二个将根据所选的第一个下拉列表填充颜色。
我开始将文档插入到集合中,如下所示:
ProductList.insert ({ product: "apple", color: "\"red\",\"green\""});
ProductList.insert ({ product: "banana", color: "\"yellow\",\"green\""});
这就是我到目前为止所做的:
Main.html
<template name="prodlist">
<select id="category-select">
<option disabled="disabled" selected="selected">Please Select</option>
{{#each prodlist}}
<option value="{{this}}">{{this}}</option>
{{/each}}
</select>
</template>
<template name="colorlist">
<select id="category-select">
<option disabled="disabled" selected="selected">Please Select</option>
{{#each colorlist}}
<option value="{{this}}">{{this}}</option>
{{/each}}
</select>
</template>
Main.js
Template.prodlist.helpers({
prodlist: function(){
return ProductList.find().map(function(doc) {
return doc.product
})
}
});
Template.colorlist.helpers({
colorlist: function(){
return ProductList.find().map(function(doc) {
return doc.color.split(",") //<-- edited with MrE's answer
})
我插入color: "\"red\",\"green\""
的原因是尝试模拟将下拉列表填充为硬编码:return ["red", "green"]
,但它作为一个元素返回字符串"red","green"
。有更好的方法吗?此外,我不知道是否存在处理下拉列表的包。提前致谢。
答案 0 :(得分:1)
为什么要尝试将字符串编码为数组而不是使用数组?我不确定是什么让你感到高兴。
如果您确实想要使用字符串,则需要将其(使用doc.color.split(",")
)解析为数组而不是[doc.color]