如何访问嵌套 {{#each}} 中的外部属性?

How to get access to outside properties in a nested {{#each}}?

我有一个 {{#each}} 块 运行 通过 driver 必须到达的停靠点列表。每个停靠点都需要有一个 select 运行 并且 select 从另一个 collection 引入。所以我在另一个 {{#each}}.

中有 select

现在我需要以编程方式检查 driver 是否已经在数据库中为这个特定的站点编辑 select,因为 select 是 运行ning 并拥有它得到 selected。

我的问题是我需要从外部 {{#each}} 访问信息以在内部 {{#each}} 中进行比较。

下面是我的代码,但是当我 运行 它时 stopNumundefined

非常感谢任何帮助。

<td class="text-left">
    {{#if notEquals stopNum 0}}
    <select class="form-control driverName clearForm" id="driverName{{stopNum}}" name="driverName{{stopNum}}">
        <option value="" ></option>
        {{#each drivers}}
        {{#if dispatchDriverSelected driversName stopNum}}
        <option value="{{driversName}}" selected>{{driversName}}</option>
        {{else}}
        <option value="{{driversName}}">{{driversName}}</option>
        {{/if}}
        {{/each}}
    </select>
    {{/if}}
</td>

#each 中,上下文设置为当前元素。

如果你想获取一个外部的item/property,你可以在模板代码中使用..或者在helpers中使用Template.parentData(numLevels)获取父上下文:

{{#each drivers}}
    {{#if dispatchDriverSelected driversName ../stopNum}}
        <option value="{{driversName}}" selected>{{driversName}}</option>
    {{else}}
        <option value="{{driversName}}">{{driversName}}</option>
    {{/if}}
{{/each}}

这是一个简单的例子:

模板结构:

<template name="example">
  {{#with datum}}
    <div class="wrapper">
    {{outer}}
    <div class="items">
      {{#each inner}}
        <div class="inner">
        {{prop}} {{someFunc ../outer}}
        </div>
      {{/each}}
    </div>
  </div>
  {{/with}}
</template>

帮手:

Template.example.helpers({
  datum() {
    return {
      outer: 'outer 1',
      inner: [{
        prop: 'inner 1'
      },{
        prop: 'inner 2'
      }]
    }
  },
  someFunc(datum) {
    return `processed ${datum}`;
  }
});

渲染到:

<div class="wrapper">
  outer 1
  <div class="items">          
    <div class="inner">
      inner 1 processed outer 1
    </div>

    <div class="inner">
      inner 2 processed outer 1
    </div>

  </div>
</div>