这是我的数据
data = [
{ category : "Cat1"},
{ category : "Cat2"},
{ category : "Cat3"},
{ category : "Cat4"},
{ category : "Cat5"},
{ category : "Cat6"}]
假设我在名为myData
的集合中拥有它我想要的是以2为一组分组和显示我的数据。 然后我将其显示在导航栏中(实际上是在下拉列表中),就像这样
<ul>
{{#each group}}
<li class="col-md-2">
<ul>
{{#each categories}}
<li>{{category}}</li>
{{/each}}
</ul>
{{/each}}
<ul>
我要问的是如何在我的助手或mongodb中对数据进行分组,以便我可以得到这个结果。
答案 0 :(得分:1)
我不是100%清楚“group”的意思,但假设您正在使用Boostrap导航栏下拉菜单,则可以将它们与分隔符分组:
{{#each categories}}
<li>{{category}}</li>
{{#if doSeparator @index}}
<li role="separator" class="divider"></li>
{{/if}
{{/each}}
并且doSeparator助手进入.js文件:
doSeparator( index ) {
return (index % 2);
}
另一方面,如果您想要每个组的子菜单,则需要在两个级别重新组织数组。
答案 1 :(得分:1)
另一种方法可能是:
<ul>
{{#each groups}}
<li>
<ul>
{{#each this}}
<li>{{category}}</li>
{{/each}}
</ul>
</li>
{{/each}}
</ul>
然后在你的模板助手中:
import { Template } from 'meteor/templating';
import chunk from 'lodash/chunk';
import { myData } from '/imports/api/mydata/collection';
import './main.html';
Template.someTemplate.helpers({
groups() {
return chunk(myData.find().fetch(), 2);
},
});
这使用lodash的chunk
函数将返回的数组拆分为2个项目的分组(因此,如果您还没有meteor npm install --save lodash
,则需要<ul>
<li>
<ul>
<li>1</li>
<li>2</li>
</ul>
</li>
<li>
<ul>
<li>3</li>
<li>4</li>
</ul>
</li>
<li>
<ul>
<li>5</li>
<li>6</li>
</ul>
</li>
</ul>
。
以上将为您提供如下输出:
set label 1 at 150,700 gprintf("$t_{8/5}$ = %.2f s",t85_1)
答案 2 :(得分:0)
您可以使用下划线map
和compact
Template.hello.helpers({
groups() {
// var data = myData.find().fetch();
var data = [
{ category : "Cat1"},
{ category : "Cat2"},
{ category : "Cat3"},
{ category : "Cat4"},
{ category : "Cat5"},
{ category : "Cat6"}];
return _.chain(data).map(function(item, index){
return (index % 2) ? false : data.slice(index, index + 2);
}).compact().value();
},
});
然后,在您的模板中,您可以使用嵌套的#each in
循环遍历群组
<template name="hello">
<ul>
{{#each group in groups}}
<li class="col-md-2">
<ul>
{{#each category in group}}
<li>{{category.category}}</li>
{{/each}}
</ul>
</li>
{{/each}}
</ul>
</template>