#each在一次迭代中循环遍历集合中的多个文档

时间:2015-03-27 13:18:13

标签: arrays mongodb meteor

我有一个名为Tasks

的Meteor集合

我想在模板上显示它们,每隔2个包裹一个div。

这样的事情

<div>
  {{task 1}}
  {{ task 2 }}
</div>

<div>
  {{task 3}}
  {{ task 4 }}
</div>

我如何在Meteor中做到这一点?

1 个答案:

答案 0 :(得分:0)

使用帮助器来定义要迭代的内容 - 在这种情况下,您可以执行类似返回包含要显示的第一个和第二个任务的对象数组的操作:

<template name='whatever'>
  {{#each getTasksToIterate}}
    <div>
      {{> task firstTask}}
      {{> task secondTask}}
    </div>
  {{/each}}

然后,在您的助手中,定义函数getTasksToIterate

Template.whatever.helpers({
  getTasksToIterate: function() { 
    var tasks = [];
    _.each(this.tasks, function(task, index) { 
      if (index % 2 === 0) { // Pick the odd ones
        tasks.push({firstTask: elem, secondTask: this.tasks[index + 1]}); 
      }

    return tasks;
  }
});

请注意,这假设您拥有偶数个任务;如果你偶尔有一个奇数,你需要用适当的if语句等处理它。