如何使用Meteor.js中的Template辅助对象迭代对象中的两个数组
How iterate through two array in a object using Template helpers in Meteor.js
我的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个值。我知道在某个地方需要上下文变量,但我无法计算出来。有人有什么想法吗?
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;
}
});
相关文章:
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 在Javascript中转换对象数组
- 在JavaScript中通过索引从对象数组中获取值
- Backbone虹吸以获取对象数组
- 如何在DataTables 2.1中迭代对象数组
- Javascript-根据赋值顺序,按键合并对象数组
- 将事件附加到对象/数组
- jQuery$.inArray()总是返回-1和一个对象数组
- javascript处理一个对象数组以获得一个新的对象数组
- javascript在数组中获取对象数组中键的所有不同值
- 在对象数组中查找多个值的d3范围
- Undercore.js获取对象数组中键对象的值
- 在mongoose中使用正则表达式在对象数组中进行查询搜索
- 如何通过json对象数组为嵌套对象赋值
- 如何循环通过2个对象数组并通过匹配id进行合并
- 为对象数组创建列表项
- 如何使用javascript合并两个对象数组
- JSON到对象数组,并向每个对象添加项
- JavaScript:从对象数组中获取唯一值及其计数
- 按不同项目对对象数组进行排序