テンプレートコンテキストの状況に遭遇し、回避策を見つけるのに苦労しています。
問題のテンプレートは次のとおりです。
{{#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
for参加者にドロップすると、vote
コンテキストにアクセスできなくなるため、各投票で使用可能なオプションにアクセスできなくなります。
ハンドルバーパスを使用して親コンテキストに戻ることでこれをある程度回避できますが、これはテンプレートヘルパーのコンテキストには影響しないため、inはcurrentまたは、ではなくcurrentを参照し、私たちが現在繰り返しているものを知っています。../options
this
Template.vote.is_selected_option
participant
vote
option
option
DOM操作やjQueryシェナニガンに頼らずに、これを回避する方法について何か提案はありますか?
これは私にとって何度も出てきたテンプレートの問題です。テンプレート、テンプレートヘルパー、およびテンプレートイベントで、テンプレートコンテキスト階層に到達するための正式な方法が必要です。