流星空格键嵌套{{each}}助手问题

时间:2017-03-15 00:49:14

标签: templates meteor each meteor-blaze spacebars

我有2个集合:TestPlansUsers TestPlans有一个名为“assigned”的数组,其中包含user _idsUsers有一个avatarUrl字符串

我需要遍历每个testPlan以及每个assignedUser并为该用户抓取avatarUrl

{{#each testPlan}} {{#each assignedUser}} {{avatarUrl}}

这样的东西

testPlans的助手我有:

testPlan: function() {
  var testPlans = TestPlans.find({}, { sort: {createdAt: -1}}).fetch();
  return testPlans;
}

assignedUser的助手我有:

assignedUser: function(){
 var assignedUsers = TestPlans.findOne({_id: this._id}).assigned;
 return assignedUsers;
}

我不确定如何为每个avatarUrl调用assignedUser。 查询将是

Users.findOne({_id: thisUserId}).profile.avatarUrl;

只是不确定如何准确传递用户ID。

2 个答案:

答案 0 :(得分:0)

如果assignedUsers是userIds数组,在这种情况下可能是最好的实现..

//html
{{#each testPlan}} 
   {{#each assignedUser}}
     {{profile.avatarUrl}}
     //you can do this because {{this}} is the user object
     //{{profile.avatarUrl}} is the same as {{this.profile.avatarUrl}}
   {{/each}}
{{/each}}

//js
assignedUser: function(){
   var assignedUsers = TestPlans.findOne({_id: this._id}).assigned;
   var usersCursor = Users.find({_id:{$in:assignedUsers}}});
   return usersCursor;
}

答案 1 :(得分:0)

我会更改您的assignedUser模板助手以接受用户ID参数,然后返回头像网址

assignedUser: function(userId) {
  return Users.findOne({_id: userId}).profile.avatarUrl
};

然后你的模板代码看起来像这样。

{{#each tp in testPlan}}
  {{#each au in tp.assignedUser}} 
    {{avatarUrl au._id}}
  {{/each}}
{{/each}}

另外,我喜欢使用each...in而不仅仅是each,因为它更明确了实际发生的事情