【问题标题】:How to group elements in array in template如何在模板中对数组中的元素进行分组
【发布时间】:2015-05-31 18:32:27
【问题描述】:

确切地说,我有一个元素数组 14,我想在模板中显示它们。我使用{{#each tasks}},但我想在前端将元素组合在一起,所以我将task1 和task2 组合在div 中,然后3 & 4 在另一个div 中等等。

{{#each tasks}}
  <div class="task-group">
   {{task 1}}
   {{task 2}}
  </div>
{{/endeach}}

我怎么能在 Meteor 中做到这一点。

【问题讨论】:

  • 我认为您需要将此数组在控制器中的某处转换为带有组的数组。然后你可以轻松地进行双迭代。
  • 啊,这很有帮助。我想你不知道用 JavaScript 做这件事的任何方法。
  • 你可以试试这个。但是当元素数量为奇数(或最后一个元素未定义)时,您需要处理案例 function groupedArr(arr) { var res = []; for (var i = 0; i
  • 奇怪它没有工作,我想知道它是不是 Meteor 是如何从 Mongo 传播信息的
  • 您能提供数据示例吗?任务看起来如何?

标签: javascript meteor each meteor-blaze


【解决方案1】:

我知道这可能会迟到,但对于那些想要完成此任务的人来说。后来我从使用 ruby​​ on rails 的经验中发现了这一点。

首先在你的助手中定义一个这样的函数

splittedArray: function () {
    let items = Collection.find().fetch()
    let size = 2;
    let arrays = [];

    while (items.length > 0)
        arrays.push(items.splice(0, size));
    return arrays
}

其中size 是您想要在一个组中的项目数量

返回的值将是一个包含多个数组的数组

您现在可以像这样简单地在 blaze 模板中识字

{{#each splittedArray}}
   {{#each this}}
      {{name}}
   {{/each}}
{{/each}} 

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-18
    • 1970-01-01
    • 2012-11-24
    • 2012-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-22
    相关资源
    最近更新 更多