我有一个 {{#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/