在 Meteor 中使用带有参数的#each

Use #each with argument in Meteor

我是 Meteor 框架的新手,我正在尝试使用 meteor + mongo + 空格键显示一些数据。问题是我可能需要使用一个带空格键的参数,#each,但它不允许。

我的代码:

$file.js

  Template.home.helpers({
      places: function() {
          return Places.find();
      }
  });

  Template.content.helpers({
    images: function() {
        return Images.find({});
     }
  }); 

$file.html

<template name="home">    
    {{#each places}}
        {{>content}}
    {{/each}}
</template>

<template name="content">
    <li>{{name}} - {{date}}</li>
    {{#each images}}
        <img src="{{this.url}}">    
    {{/each}}
</template>

我想做的 - 但它没有用 - 是在 Template.content.helper 函数中使用一个参数,如下所示:

  Template.content.helpers({
    images: function(ARG) {
        return Images.find({place: ARG});
     }
  }); 

并且在 html 文件中将是

<template name="content">
    <li>{{name}} - {{date}}</li>
    {{#each images {{name}} }}
        <img src="{{this.url}}">    
    {{/each}}
</template>

你们知道如何正确显示信息吗?我不想显示每个地方的所有信息(图像)。我只想显示那个地方的记者的图片...

提前致谢, 马库斯

好的,我可以用下面的代码做我想做的事:

file.html

<template name="content">
    <li>{{name}} - {{date}}</li>   
    {{#each images name}}
        <img src="{{this.url}}">    
    {{/each}}
</template>

(这意味着我必须删除双括号)

然后在 file.js

Template.content.helpers({
    images: function(location) {
        console.log(location);
        return Images.find({"metadata.location": location});
    }
  });

我希望它对其他人也有帮助。

由于助手的实现可以像这样访问当前数据上下文,因此您无需将 {{name}} 作为参数传递。相反,使用 this.name 在助手中访问 {{name}} .

翡翠

<template name="content">
  <li>{{name}} - {{date}}</li>
  {{#each images}}
    <img src="{{this.url}}">    
  {{/each}}
</template>

JS

Template.content.helpers({
  images: function() {
    place = this.name;
    return Images.find({place: place});
  }
});