2016-04-13 33 views
0

我想用一个简单的例子来研究流星,其中一个是水果列表,另一个是根据水果选择:流星:从下拉菜单中选择一个值并返回到另一个下拉列表中的._id

集合(产品列表):

a = new Array(); 
    a.push({color:"orange"}); 
    a.push({color:"red"}); 
    ProductList.insert({ product: "Orange", a }); 
    a = new Array(); 
    a.push({color:"green"}); 
    a.push({color:"red"});  
    ProductList.insert({ product: "Apple", a }); 
    a = new Array(); 
    a.push({color:"green"}); 
    a.push({color:"yellow"}) 
    ProductList.insert({ product: "Banana", a });  

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> 

JS:

Template.prodlist.events({ 
    "change #category-select": function (event, template) { 

     var category_prod = $(event.currentTarget).val(); 
     //this return the correct element selected in the dropdown(i.e Orange Apple Banana) 
     console.log("category : " + category_prod);    
     var productID = ProductList.findOne({product: category_prod })._id       
     console.log("current ID: " + productID); 
    } 
}); 

请参阅******上面我的第一个问题 这已被chrisklaussner解决。代码已更新。

而且我想喂发现第二个下拉的._id (saved to productID)
HTML:

<template name="colorlist"> 
<select id="category-select"> 
     <option disabled="disabled" selected="selected">colors</option> 
     {{#each colorlist}} 
      <option value="{{this}}">{{this}}</option> 
     {{/each}} 
    </select> 
</template> 

JS:

Template.colorlist.helpers({ 
    colorlist: function() { 
     const ans = productID.get(); 
     const product = ProductList.findOne({ _id: ans}); 
     if (product) { 
        return product.a.map(function (doc) { 
      return doc.color; 
      }); 
     }   
    } 
}); 

请参阅******以上是我的第二个问题 这已经解决了。

编辑:这个问题已经解决,原帖中包含了正确的答案

回答

1

你必须在findOne调用一个错误。第一个参数(您通过{}的位置)是指定要获取的选择器。第二个是选项。

例如,ProductList.findOne({ product: category_prod })._id应该给你正确的产品ID。在你的情况下,选择器{}匹配集合中的所有产品,并且findOne返回其中的第一个。这就是为什么你总是得到相同的ID。

+0

谢谢我对第一个参数只用于._id感到困惑。 – Alex

+0

我已经编辑了关于我发现的问题#2的帖子。你有空时可以看看吗? – Alex

+0

你期望得到什么回报?如果你在一个数组上调用'map'(或者在这种情况下是Mongo游标),你总是会得到一个数组。 – chrisklaussner

相关问题