流星数据上下文,将数组传递到每个Spacebars循环中

时间:2014-12-29 00:53:32

标签: javascript meteor handlebars.js spacebars

在此Example 2 - " 传递数据上下文"

JS

Template.overview.helpers({  
  users: [
    { name: 'David' },
    { name: 'Shaune' }
  ]
});

HTML

<template name="overview">  
  {{> userList users}}
</template>

<template name="userList">  
  {{#each this}}
    {{name}}<br>
  {{/each}}
</template>  

结果

David  
Shaune 

我的目标是将一组模板名称传递到用户所在的Template.overview,如下所示:

<template name="overview">  
  {{#each templateArray }}
    {{> userList this }}
  {{/each}}
</template>

其中templateArray是包含模板名称的字符串数组,this是每个模板的名称。

这可能吗?

编辑:

如需更深入,请考虑我的helpers

中有以下内容
Template.overview.helpers({  
  users: [
    { name: 'David' },
    { name: 'Shaune' }
  ],
  otherUsers: [
    { name: 'Jane' },
    { name: 'Betty' }
  ],
  moarUsers: [
    { name: 'Ben' },
    { name: 'Jerry' }
  ]
});

我想将每个数据上下文传递到同一个模板中(在本例中为userLists)。

1 个答案:

答案 0 :(得分:1)

您无需调用任何内容,您可以在帮助程序中使用this,例如

helper: function(){
   return this; //if you pass string via templateArray
   return this.name; //if you pass object via templateArray
}

因为你所做的事情看起来像是这样但很好地包装在模板中

<template name="overview">  
  {{#each templateArray }}
      {{name}}<br>
  {{/each}}
</template>

我不知道为什么你在代码中有双循环,在第一个循环中传递对象并且它不能迭代它

修改

如果您想循环遍历字符串数组,请执行以下操作:

{{#each templateArray}}
       {{this}}<br>
 {{/each}}