我们如何从Meteor中的集合中的变量填充下拉列表的元素?

时间:2016-04-12 21:51:09

标签: meteor

我实际上是在尝试做两件事:

有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"。有更好的方法吗?此外,我不知道是否存在处理下拉列表的包。提前致谢。

1 个答案:

答案 0 :(得分:1)

为什么要尝试将字符串编码为数组而不是使用数组?我不确定是什么让你感到高兴。

如果您确实想要使用字符串,则需要将其(使用doc.color.split(","))解析为数组而不是[doc.color]