Meteor / Blaze渲染:{{each}}在另一个{{each}}中没有返回正确的数据(数据上下文)

时间:2016-05-29 12:27:00

标签: templates meteor meteor-blaze helpers

我想知道你是否能给我一些线索如何解决这个问题'。我是JS(+ Meteor)的新手,所以对你来说可能非常简单。我正在使用helpersblaze/spacebars进行渲染。

我有一个简单的帮手:

Template.monitoring.helpers({

    'realtime': function(){
        return {
            house:    house.find( {} ),
            neighbours: neighbours.find( {} ),
        }
    } // end of realtime

}); // end of helpers

此时一切正常。我能够检索到我想要的数据。问题是我无法像我想的那样呈现它。在我的template下面。

<template name="monitoring">

   {{#each realtime.house}}
   <div class="card red">
     SHOW STUFF ABOUT HOUSE
   </div>

    <div class="card blue">
        {{#each realtime.neighbours}}
        SHOW STUFF ABOUT NEIGHBOURS OF THE SPECIFIC HOUSE
        {{/each}}
  </div>

  {{/each}} -> end of each realtime.house

</template>

更准确地说,当我的模板呈现时:

  • 红牌数量=房屋数量=&gt;完美
  • 每张红牌都包含 one house =&gt;的数据完美

  • 蓝卡数量=房屋数量=&gt;完美

  • 每张蓝卡包含所有邻居 =&gt;的数据错误。我想要的是邻居关于特定房屋的数据

你有没有在正确的地方找到合适的东西? 非常感谢你。

1 个答案:

答案 0 :(得分:0)

你需要两个助手:一个用于返回房屋,另一个用房屋作为上下文返回邻居。如果没有模式,我无法给出准确的答案,但我们假设每个邻居都有一个preventDefault()属性来连接这两个。

houseId

你的模板看起来像这样(假设邻居应该都是蓝卡):

Template.monitoring.helpers({
  houses: function () {
    return house.find();
  },

  neighbors: function () {
    // Note the context here is a house because it's
    // called from within an each.
    return neighbours.find({ houseId: this._id });
  },
});