这是相关的模板:
{{#each votes}}
<h3>{{question}}</h3>
<ul>
{{#each participants}}
<li>
<p>{{email}}</p>
<select name="option-select">
{{#each ../options}}
<option value="{{option}}" class="{{is_selected_option}}">{{option}}</option>
{{/each}}
</select>
</li>
{{/each}}
</ul>
</div>
{{/each}}
这里是一份投票文件的示例:
{
_id: '32093ufsdj90j234',
question: 'What is the best food of all time?'
options: [
'Pizza',
'Tacos',
'Salad',
'Thai'
],
participants: [
{
id: '2f537a74-3ce0-47b3-80fc-97a4189b2c15'
vote: 0
},
{
id: '8bffafa7-8736-4c4b-968e-82900b82c266'
vote: 1
}
]
}
这里出现了问题...
当模板进入参与者的#each
时,它不再具有访问vote
上下文的权限,因此无法访问每个投票的可用选项。
我可以通过使用../options
handlebars路径来跳回到父级上下文中来解决这个问题,但这不会影响模板助手的上下文,所以Template.vote.is_selected_option
中的this
指的是当前的participant
,而不是当前的vote
或option
,并且无法知道我们目前正在迭代哪个option
。
有什么建议可以解决这个问题,而不需要借助DOM操作和jQuery伎俩?
这是一个我遇到过多次的模板问题。我们需要一种正式的方法,在模板、模板助手和模板事件中可以向上访问模板上下文层次结构。
问题:{{../question}}
- Michael