我的HTML类似于
<template name="stop">
{{#each thumb}}
<tr>
<td class="image" ><img src="{{this.data}}"></td>
<td>
<center style="float:right; margin-bottom: 25%;">
<h2> Do you like this product? </h2>
<h2>{{this.text}}</h2></center>
</td>
</tr>
{{/each}}
</template>
这个模板引用了我的模板助手,它看起来像这样
Template.stop.helpers( {
'thumb': function(data) {
console.log(z);
return tweetImages.findOne()
})
tweetImage.findOne()输出此
Object {_id: "1", data: Array[7], text: Array[7]}
我每次模板运行时都试图迭代两个数组中的每个项目,而是每次输出每个数组的所有7个值。我知道在某个地方需要的上下文变量,但我无法解决它。有人会有任何想法吗?
答案 0 :(得分:2)
findOne
只返回一个元素,因此each
只会迭代一次。
您需要嵌套each
来浏览data
或text
属性,如下所示:
{{#each thumb}}
...
{{#each data}}
//but you won't be able to get 'text' here
{{/each}}
...
{{/each}}
但正如您所看到的,您将无法使用此方法访问数据和文本数组。也许您可以修改助手返回的数据,使其具有以下形式:
[
{data: ..., text: ...},
{data: ..., text: ...},
{data: ..., text: ...},
...
]
所以你可以这样做:
{{#each thumb}}
...
{{data}}
{{text}}
...
{{/each}}
要重写数据,您可以使用for
循环:
Template.stop.helpers({
'thumb': function() {
var result = tweetImages.findOne();
var newResult = [];
for(var i = 0; i < result.data.length; i++) {
newResult[i] = {data:result.data[i], text:result.text[i]};
}
return newResult;
}
});