meteor:按字段值迭代集合

时间:2014-05-04 02:34:19

标签: meteor

我有一个带有类别字段和名称字段的项目,例如:

{ category: 'CategoryOne', name: "ItemOne" },
{ category: 'CategoryOne', name: "ItemTwo" },
{ category: 'CategoryTwo', name: "ItemThree" },
... etc

我想要做的是在类别的标题下显示这些内容。

我是流星的新手,并且有很多时间做两件事:

(1)获取反应类别列表,或 (2)迭代项目,按类别显示它们。

我不确定这里的Meteor方法是什么。

1 个答案:

答案 0 :(得分:2)

不幸的是,minimongo还没有支持聚合,所以这有点困难。以下是我将如何处理它。

首先创建2个模板助手。第一个只是组合一个类别列表并返回一个类别名称数组,第二个将类别名称作为参数,并返回该类别中所有记录的游标。

Template.categories.helpers({
    categories: function(){
        var added = [];
        return Items.find().map(function (item) {
            if(_(added).indexOf(item.category) === -1){
                return item.category;
            }
        });
    },
    categoryItems: function(category){
        return Items.find({category:category});
    }
});

接下来,模板需要嵌套的{{#each}}块,第一个块迭代categories数组,并将类别名称作为下一个帮助器的参数传递给下一个。

<template name="categories">
    {{#each categories}}
        <h1>{{this}}</h1>
        <ul>
        {{#each items this}}
            <li>{{name}}</li>
        {{/each}}
        </ul>
    {{/each}}
</template>