2016-08-03 78 views
1

這裏是我的數據組和顯示數據

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

所以各組取2類至少,這就是我所要求的 –

回答

0

可以使用下劃線的mapcompact

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(); 
    }, 
}); 

然後把它分解成一個助手裏面的2組,在你的模板,你可以通過組使用嵌套#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> 
+0

這是我的知識以上,但我會嘗試做到這一點,我試圖瞭解它是否可以工作 –

+0

下劃線JS庫已經與流星 - 參見http://underscorejs.org/(在鏈接上搜索「鏈」 'map'和'compact'方法)。 '#each in'在這裏http://meteorcapture.com/spacebars/#each – Kalman

1

我不是100%清楚你所說的「團」的意思,但假設你使用的自舉導航欄的下拉列表中,你可以將它們與分離器組:

{{#each categories}} 
    <li>{{category}}</li> 
    {{#if doSeparator @index}} 
     <li role="separator" class="divider"></li> 
    {{/if} 
{{/each}} 

和doSeparator助手去你的。 js文件:

doSeparator(index) { 
    return (index % 2); 
} 

如果在另一方面,你要爲每個組,您將需要重新組織陣列中的兩個級別的子菜單。

+0

是啊,我用引導導航欄的下拉列表中,但我想知道我應該放入我的幫手,將我的類別2加2。 您的doSeparator是否已將其分組? –

+0

「小組」可能是很多事情。用我的答案中的代碼,你會在每兩個項目後得到一個分隔符。 (索引%2)是索引模數2,當索引爲1,3,5等時爲真。因此,這些項目將在菜單中在視覺上分組爲2和2。或者你想要菜單中每一行的項目,那你的意思是「組」嗎? –

+0

是的,它將你的數組分組給你的幫手。很好的答案! – sapna

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>