流星:Spacebars每个参数

时间:2015-12-11 22:49:19

标签: meteor spacebars

我是Meteor.js的新手并且遇到了问题。

我将用户对象传递给配置文件模板,例如:

{
  _id: "D8JpXRQskm3grykjg",
  username: "foo",
  profile: {communities: ["AkGCakz6mSgMb8qyS", "j8aB3i5iscrC4ehkA"]},
}


<template name="profile">
  <h1> {{username}}: {{_id}} </h1>
  <h3>Communities</h3>
  <hr>
  {{#each profile.communities}}
    {{> communityItem}}
  {{/each}}
</template>

问题是我已经编写了一个我在其他地方使用的communityItem模板,它接受了communityName。有没有办法可以编写辅助函数,传入可返回社区名称列表的communityIds列表?我想:

...
{{#each getCommunityNames(profile.communities)}}
  {{> communityItem}}
{{/each}}
...

我很可能以错误的方式接近问题,或者不以“Spacebars”的方式写作。谢谢!

1 个答案:

答案 0 :(得分:1)

确定你可以:

Template.myTemplate.helpers({
  getCommunityNames: function(commIds) {
    var communities = Communities.find({_id: {$in: commIds}}).fetch();
    return _.pluck(communities, 'name'); // returns ['Name 1', 'Name 2'];
  }
});

注意,语法 方法 param 而非方法(参数)

{{#each getCommunityNames profile.communities}}
  {{>communityItem}}
{{/each}}