分组和显示数据

时间:2016-08-03 13:49:30

标签: mongodb meteor

这是我的数据

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中对数据进行分组,以便我可以得到这个结果。

3 个答案:

答案 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)

您可以使用下划线mapcompact

将其分解为帮助者中的2个组
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>