【问题标题】:Meteor: How to show distinct field values from a collection in a select dropdown?Meteor:如何在选择下拉列表中显示集合中的不同字段值?
【发布时间】:2016-02-25 06:58:28
【问题描述】:

我正在构建一个 Meteor 应用程序,其中有一个产品集合。该集合中的每个文档都有两个字段:productName 和 productCategory。在我的应用程序中,我想显示给定类别的所有产品。所以我有一个选择字段,我想在其中选择一个类别。按下搜索按钮后,我想显示给定类别的所有产品的列表。

在我的模板中,我有以下代码来创建选择字段

<select>
{{#each distinct_products}}
<option>{{productCategory}}</option>
{{/each}}
<select>

在我的js文件中,distinct_product的定义如下:

Template.templatename.distinct_products = function() {
 var distinctEntries = _.uniq(Meteor.products.find({}, {sort: {productCategory:1}, fields: {productCategory:true}}).fetch().map(function(x) {
 return x.productCategory;
 }), true);
 return distinctEntries;
};

我在以下主题中找到了这个解决方案:Meteor: how to search for only distinct field values aka a collection.distinct("fieldname") similar to Mongo's

但是,我的选择字段显示的选项数量等于唯一产品类别的数量,但它是空值(无文本)。因此,我的选择字段有许多空选项,并且没有显示产品类别。

我想我的 JS 函数中返回值的类型有问题,但我不知道是什么。有人可以让我走上正确的道路吗?

谢谢。

【问题讨论】:

    标签: meteor distinct


    【解决方案1】:

    您的 _.uniq 块将返回一个 productCategory 属性数组,这是您的{{#each} 块正在迭代的内容 - 因此您不应在模板中再次指定 {{productCategory}}

    改变这个:

    <option>{{productCategory}}</option>
    

    到:

    <option>{{this}}</option>
    

    它应该可以工作。通过尝试在循环中访问{{productCategory}},您实际上是在请求product.productCategory.productCategory,这将是空的; product.productCategory 已被您的助手返回。

    附带说明一下,_.pluck 被设计为您使用 _.map 的更简洁的版本,因此可能值得一试。

    【讨论】:

      【解决方案2】:

      我可以缩短它

      var wow = _.uniq(_.pluck(Nodes.find().fetch(),"productCategory"));
      

      【讨论】:

      • 这并没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方发表评论 - 您可以随时评论自己的帖子,一旦您有足够的reputation,您就可以comment on any post。 - From Review
      • 我不知道为什么,但似乎没有很多人喜欢这里的新人。如果可以的话,我肯定会发表评论。我只有18声望。发表评论需要 50 分钟。在这一点上获得声誉的唯一方法是回答,问我自己的问题。和投票。我明白你在说什么,但请给新人一个获得足够积分的机会,甚至可以按照你的要求去做。
      猜你喜欢
      • 1970-01-01
      • 2013-02-16
      • 2014-02-15
      • 1970-01-01
      • 1970-01-01
      • 2021-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多