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

标签 javascript meteor meteor-blaze spacebars

我有一个 {{#each}} block ,它贯穿司机必须停靠的一系列站点。每个停止点都需要有一个选择运行,并且选择从另一个集合中提取。所以我在另一个 {{#each}} 中进行了选择。

现在,我需要以编程方式检查在选择运行时是否已在数据库中为该特定停止选择了驱动程序并选择它。

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

下面是我的代码,但是当我运行它时,stopNum未定义

非常感谢这里的任何帮助。

<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中,上下文设置为当前元素。

如果您想获取外部项目/属性,可以在模板代码中使用 .. 或在模板代码中使用 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>

关于javascript - 如何访问嵌套 {{#each}} 中的外部属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33923722/

相关文章:

javascript - jQuery Ajax 两个相同的函数适用于其中一个而不适用于另一个

javascript - JS点击按钮时显示2个文本框

javascript - 如果全局变量变得未定义,则立即触发函数

javascript - Meteor Template.myTemplate.rendered 在 Accounts.createUser 函数后未触发

javascript - 在 Meteor 上使用 ReactiveVar 时等待 Blaze 上的数据

javascript - Meteor & Blaze 模板的子部分

javascript - 当某些调用有效而其他调用失败时 $q.all() 会发生什么?

meteor - Apollo/GraphQl-类型必须为输入类型

javascript - Flow Router 获取当前 Router 服务器端

javascript - 在 Meteor 中使用#each,检查集合中的 'last' 元素是否到达