If statement Meteor if helper-如何在每个循环中访问此数据

If statement Meteor if helper-如何在每个循环中访问此数据,if-statement,meteor,this,helper,datacontext,If Statement,Meteor,This,Helper,Datacontext,我想给用户一个按钮,将一个集合中的文档id(以及他们的组名)添加到另一个集合中 我有一个#each循环,它通过模板助手查询返回第一个集合中的每个文档。在每个返回的文档中,我需要检查id是否已添加到其他集合中,并且根据结果,html中的#if helper返回不同的输出 但是“this”返回一个空对象,我不知道如何将每个“this”数据上下文传递到“inCollectionTwo”助手: 由于您在中使用的是each..,因此您正在将该块的整个数据上下文更改为每次迭代的文档。现在,可以在事件处理程序

我想给用户一个按钮,将一个集合中的文档id(以及他们的组名)添加到另一个集合中

我有一个#each循环,它通过模板助手查询返回第一个集合中的每个文档。在每个返回的文档中,我需要检查id是否已添加到其他集合中,并且根据结果,html中的#if helper返回不同的输出

但是“this”返回一个空对象,我不知道如何将每个“this”数据上下文传递到“inCollectionTwo”助手:


由于您在中使用的是
each..,因此您正在将该块的整个数据上下文更改为每次迭代的文档。现在,可以在事件处理程序和帮助程序中使用
this
关键字引用该文档

{{#each doc in colOne}}
  {{#if inCollectionTwo)}}
    {{> rmvfrmcolTwo doc=doc}}
  {{else}}
    {{> addtocolTwo doc=doc}}
  {{/if}}
{{/each}}
在您的助手中:

Template.Collections.helpers({
  //...
  inCollectionTwo: function() {
    // `this` is the `doc` from the #each block in your template
    var docid = this._id;

    //...
  }
}
编辑:或者,您可以将新上下文作为参数传递给帮助器

{{#each doc in colOne}}
  {{#if (inCollectionTwo doc)}}
  ...
还有你的助手

inCollectionTwo: function( doc ) {
  var docid = doc._id;
  //...
}

《流星指南》中有一个关于火焰和
的循环。对于你的问题,还有其他一些方法可以解释,但这应该让你开始。

感谢@chazsolo的输入,首先,这只是我的一个换位错误。为了便于阅读,我重命名了模板、助手和集合。但在第二点上,“this”本身仍然返回一个空对象。我在发布之前就尝试过了,应该提到。@edoras您也可以尝试将
doc
作为参数传递给助手,然后在那里访问它。比如:
{{{#if(inCollectionTwo-doc)}
-我更新了我的答案以反映这一点
{{#each doc in colOne}}
  {{#if (inCollectionTwo doc)}}
  ...
inCollectionTwo: function( doc ) {
  var docid = doc._id;
  //...
}