你好,对不起我的英语。
我在Paint中画了一张照片,这样你就能更好地理解我的问题/意图: Sketch in Paint
我想在我的网站上构建这个html结构,如图所示。
我的mongodb结构:
{ "_id" : "doZfpnSFPzuPCi69W", "title" : "TodoA", "date" : "2016-10-03" }
{ "_id" : "kLdCQotDBPmB3FGzY", "title" : "TodoB", "date" : "2016-10-03" }
{ "_id" : "fgAoaq53oNdKQSHXv", "title" : "TodoA", "date" : "2016-10-04" }
{ "_id" : "L6v4FC5PpyHjCkkpd", "title" : "TodoB", "date" : "2016-10-04" }
我知道如何使用"每个":
显示模板中的所有条目<template name="myTemplate">
{{#each showTodos}}
...
{{/each}}
</template>
但是,我不知道如何实现我的目的,你可以在我的照片上看到。我知道如何在meteor中使用if-else,但我不知道如何用if语句实现这个html结构。你能帮我解决代码和逻辑吗?
答案 0 :(得分:1)
你只需要嵌套两个{{#each}}
循环,一个用于日期,每个日期,所有匹配的文档。
但首先你需要找到独特的日期!要执行此操作,请使用下划线的_.uniq()功能。
HTML:
<template name="myTemplate">
{{#each uniqueDates}}
this
{{#each todos}}
...
{{/each}}
</template>
JS:
Template.myTemplate.helpers({
uniqueDates(){
const dates = myCollection.find({},{sort: {date: 1}})
.map((doc)=>{return doc.date});
return _.uniq(dates,true);
},
todos(){
return myCollection.find({date: this});
}
};
将.map()应用于游标允许您仅将日期提取为数组。然后在数组上使用_.uniq()
来获取唯一值。 <{1}}的第二个参数告诉它值已经排序。