我是Meteor框架的新手,我试图用meteor + mongo + spacebars显示一些数据。问题是我可能需要在空格键#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>
你们有任何想法如何正确显示信息吗?我不想显示每个地方的所有信息(图片)。我想只显示那个地方的图像...
提前致谢, 马库斯
答案 0 :(得分:2)
由于帮助程序的实现可以像这样访问当前数据上下文,因此您无需将{{name}}
作为参数传递。而是使用{{name}}
在帮助程序中访问this.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});
}
});
答案 1 :(得分:1)
好的,我可以使用以下代码完成我想要的操作:
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});
}
});
我希望它也有助于其他人。