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

Meteor / Blaze rendering : {{each}} in another {{each}} doesn't return the right data (data context)

我想知道您是否可以给我一些解决此问题的线索 'problem'。我是 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>

更准确地说,当我的模板被渲染时:

你知道如何在正确的地方获得正确的东西吗? 非常感谢。

您需要两个帮手:一个 returns 房屋,一个 returns 以房屋为背景的邻居。没有模式,我无法给出准确的答案,但我们假设每个邻居都有一个 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 });
  },
});

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

<template name="monitoring">
  {{#each houses}}
    <div class="card red">
      SHOW STUFF ABOUT HOUSE
    </div>
    {{#each neighbours}}
      <div class="card blue">
        SHOW STUFF ABOUT NEIGHBOURS OF THE SPECIFIC HOUSE
      </div>
    {{/each}}
  {{/each}}
</template>