我有一个带有类别字段和名称字段的项目,例如:
{ category: 'CategoryOne', name: "ItemOne" },
{ category: 'CategoryOne', name: "ItemTwo" },
{ category: 'CategoryTwo', name: "ItemThree" },
... etc
我想要做的是在类别的标题下显示这些内容。
我是流星的新手,并且有很多时间做两件事:
(1)获取反应类别列表,或 (2)迭代项目,按类别显示它们。
我不确定这里的Meteor方法是什么。
答案 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>