我遇到了一個模板上下文情況,我很難找到解決辦法。在流星模板和模板助手中訪問父上下文
這裏是有問題的模板:
{{#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
Template.vote.is_selected_option
指當前participant
,不到當前的vote
或option
,並且無法知道我們當前正在迭代哪個option
。
有關如何解決此問題的任何建議,而不訴諸DOM操作和jQuery shenanigans?
這是一個模板問題,多次出現在我身上。我們需要一種在模板,模板助手和模板事件中達成模板上下文層次結構的正式方法。
zorlak:我最終做的和你的例子非常相似:創建了一個擴大的'participants_with_vote_info'集合,包含了我需要的所有東西,並用'#each'遍歷它,這樣我就不需要跳回到家長。感謝您的想法! – cmal
很好的答案 - 但這很糟糕。這應該被修復 – Chet
對於一個深嵌套的模板佈局這是一個相當痛苦的屁股 –