我遇到了一个模板上下文情况,我很难找到解决办法。
这是有问题的模板:
{{#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
,但这不会影响模板助手的上下文,所以this
inTemplate.vote.is_selected_option
指的是 current participant
,而不是 current vote
or option
,并且没有办法知道option
我们当前正在迭代哪个。
关于如何解决这个问题的任何建议,而不诉诸 DOM 操作和 jQuery 恶作剧?
这是一个模板问题,对我来说已经多次出现。我们需要一种正式的方式来达到模板上下文层次结构,在模板、模板助手和模板事件中。