如何使用 Meteor.js 中的模板助手遍历对象中的两个数组

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 returns 只有一个元素,所以你的 each 只会迭代一次。 您需要一个嵌套的 each 来遍历 datatext 属性,如下所示:

{{#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;
  }
});