我有
Posts - collection
Posts.insert({title:"1"}); - simple document
Template level subscription
Meteor.publish('all',function(){
return Posts.find({sort: { createdAt: -1 }};
})
<template name="sss">
{{#each posts}}
{{title}}
{{/each}}
</temaplate>
posts:function(){
return Posts.find();
}
我尝试创建
10 December
"some title"
"some title"
09 December
"some title"
"some title"
"some title"
08 December
...
但我只有
"some title"
"some title"
"some title"
"some title"
...
我不明白如何创建这个日期?我尝试这样的事情
{{#if exist_10_dec}}
{{#each posts}}
...
{{/if}}
{{#if exist_09_dec...
但这完全是胡说八道!知道怎么创建这个吗?
答案 0 :(得分:0)
有很多不同的方法可以做到这一点,但最简单的方法是使用下划线库。首先遍历每个对象并将所需的日期设置为标题(即12月10日)。完成后,请尝试以下代码:
Template.template.helper({
'posts': function() {
var data = [
{ date: 'December 10th', title: 'blah1' },
{ date: 'December 9th', title: 'blah2' },
{ date: 'December 9th', title: 'blah3' },
{ date: 'December 10th', title: 'blah4' }
];
var groupedData = _.groupBy(data, 'date');
var result = _.map(groupedData, function(value, key) {
return { date: key, titles: value };
});
return result;
}
});
按日期对数据进行分组,并创建一个对象数组,其中数组[&#39; 12月10日&#39;]将指向12月10日对象的每个实例。要以模板可以处理的格式获取它,您需要将其映射到数组。您的模板如下所示:
{{#each posts}}
{{date}}
{{#each titles}}
{{title}}
{{/each}}
{{/each}}
我还没有完全编译这段代码;但我确实测试了分组和映射片段,并将其转换为可用的数组。以此为指导,了解您想去的地方。