从模板Meteor访问和迭代内部对象集合

Access and iteration inner objects collection from template Meteor

本文关键字:迭代 内部对象 集合 访问 Meteor      更新时间:2023-09-26

我遇到了一个问题,或者更可能是对传递到Meteor上模板的变量的误解。我想做一些非常简单的事情;我有一本文章集。每一篇文章都有一个相应的内部标签数组。

模板文章

<template name="articles">
    <div class="row">
        <div class="small-12 small-centered columns"> 
        {{#each articles}}
        {{> _article}}
        {{/each}}
        </div>
    </div>
</template>

部分粒子

<template name="_article">
<div class="article-container small-12 columns">
    <div class="article-header small-12 columns">   
      <h1 class="left">Titre: {{title}}</h1>
      <button class="right delete">&times;</button>
    </div>
    <article class="overview small-12 columns">
          <h2>Categorie: {{nameCateg}}</h2>
          <h2>{{createdAt}}</h2>
          <p>{{content}}</p>
          </article>
          <div class="article-footer small-12 columns">
            <p>Tags: 
            {{#each tags}} // I want to do something like that...
            lbl: {{tag.label}}
            {{/each}}
            </p>
          </div>
      </div>
    </template>

用蒙古语检查一篇文章

{
"_id:" "c47cezerzerz",
"title": "titre,
"tags"[
{"id": "aurtht58",
"label": "tag1"},
{"id": "aurthfe8",
"label": "tag2"}
]
}

当我尝试在标签上使用#each进行迭代时,标签似乎指的是整个标签集合,而不仅仅是内部标签列表。如何解决?

所以我可能遗漏了一些东西,比如这些变量的范围。。。事实上,我真的不知道它们是如何工作的。。。

{{#each}}内的上下文是一个子上下文,主要关注当前正在迭代的文档
例如以下文档:

{
  foo : [
    {
      bar : 1
    },
    {
      bar : 2
    }
  ]
}

你可以这样使用它:

{{#each foo}}
  <p>bar is : {{bar}} and also {{this.bar}}</p>
{{/each}}

因此,在您的情况下,直接引用字段({{label}},…(

查找首先在当前模板上下文上进行,然后在其辅助对象上进行,再向上查找全局辅助对象
模板上下文是一个完整的主题,是SpaceBars文档中的一个很好的起点。

我认为,在访问tags级别之前,您需要对游标进行迭代。(待确认(。如果添加fetch()或使用collection.findOne(),则会使用collection.find()获得光标。您会获得一个数组(在您的情况下,您只访问文档中的一个数组(,并且空格键迭代的规则正在更改。

您需要使用{{this}}访问标签,并使用{{this.label}} 访问标签项