<template name='sometpl'>
<select>
<option>day</option>
<option>night</option>
</select>
{{#if day}}
<div class='ui popup' data-popup='I'm awake!'>day</div>
{{#if night}}
<div class='ui popup' data-popup='I'm asleep'>night</div>
</template>
咖啡
Template.sometpl.helpers
day:-> if $('select').val()=='day' then true
night:-> if $('select').val()=='night' then true
Template.sometpl.onRendered ->
$('.ui.popup').popup()
此代碼$('.ui.popup').popup()
將初始化的各元素(語義UI)彈出窗口。問題是,它的跑只有在tpl渲染一次,因此隻影響這個節點:<div class='ui popup' data-popup='I'm awake!'>day</div>
。
當我選擇night
此代碼$('.ui.popup').popup()
不運行離開新呈現的節點<div class='ui popup' data-popup='I'm asleep'>night</div>
沒有彈出。
此外,當我再次選擇day
時 - 這次沒有彈出!因爲它引用了全新的'日'div的渲染,而不是舊的。
這裏可以做些什麼?
謝謝。但是,這可以通過包括另一個模板來完成嗎?也許我過分簡化了我的例子,但是我實際上有數百個這樣的'select's,如你所想象的那樣,爲它們保留數百個相應的tpls將是一件痛苦的事情。 – avalanche1
假設彈出窗口都遵循相似的格式,您只需要一個額外的模板,如上所示。只要將'text'和'day'改爲'popupText'和'text',如果這樣做更清楚,然後用這些變量調用模板就可以隨時彈出... –
@ avalanche1另一種方法是使用' this.autorun(function(){$(「。popup」)。popup()});'在'onRendered'塊中。你也必須添加一些被動的東西。用你的助手直接查詢select字段,但是如果你使用反應性的東西(並且你應該這樣做)並且在'autorun'塊中查詢這個無效變量,它應該在你改變選擇字段時更新。 – Akshat