【问题标题】:How to do foreach in Meteor with Mongo?如何使用 Mongo 在 Meteor 中进行 foreach?
【发布时间】:2015-07-08 22:12:47
【问题描述】:

有收藏

 Peoples = new Mongo.Collection('peoples');

    Peoples.insert({
        name: ["Mark", "John", "Kate"]
    });

我想在 name

中显示所有名称
<template name="pTable">
  <tr class="trJob">
    <td>
      {{#each names}}
          {{> peopleName}}
      {{/each}}
    </td>
  </tr>
</template>

<template name="peopleName">
    <div>{{name}}</div>
</template>

我的模板助手中有什么

Template.pTable.helpers({
  names: function(){
    return Posts.tags;
  }
});

Template.peopleName.helpers({
  name: function(){
    return Posts.tags.find();
  }
});

我知道我的模板助手中有 sh*** 代码,知道如何让它变得更好吗?

它必须看起来像(在 DOM 中)

<td>
  <div>Mark</div>
  <div>John</div>
  <div>Kate</div>
</td>

【问题讨论】:

  • 你想检查所有人还是只检查一个人?还是帖子?
  • @ZeevG 我想在 3 div 中制作一个 div 1 名称。 Soo 在 DOM 中它必须看起来像这样 td div Mark div John div Kate

标签: meteor


【解决方案1】:

简单的数组示例

Template.home.helpers({
  names: function(){
    return [1,2,3];
  }
});

<template name="home">
      {{#each names}}
        {{this}}
      {{/each}}
</template>

将打印:

1 2 3

每个项目在每个循环中都变成“this”。如果您在循环中调用另一个模板,则它的“this”将由项目填充

【讨论】:

【解决方案2】:

由于你的收藏有不同的名字,我会坚持第一个Peoples

以下是我将如何处理您的助手:

Template.pTable.helpers({
  names: function(){
    return People.find({_id:yourId},{fields:{name:1}}).fetch();
  }
});

您的peopleName 模板将是这样的:

<template name="peopleName">
    <div>{{this}}</div>
</template>

如果您需要获取所有文档的所有名称,我需要将您的 {{#each names}} 嵌套到另一个 {{#each doc}} 中,其中 doc 助手是这样的(也更新了 names):

Template.pTable.helpers({
     doc: function(){
        return People.find().fetch();
      },
    names: function(){
            return People.find({_id:this.id},{fields:{name:1}}).fetch();
    });

【讨论】:

  • 我将其更新为在Collection.find() 之后添加.fetch()。它现在返回一个文档数组而不是游标。它现在应该可以工作了。
猜你喜欢
  • 2021-07-15
  • 2014-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-30
相关资源
最近更新 更多