2013-05-05 48 views
0

我有這樣的模板:我需要重新載入流星網站嗎?

<template name="body"> 
    {{#if key}} 
    {{> mite}} 
    {{else}} 
    {{> settings}} 
    {{/if}} 
</template> 

<template name="settings"> 
    <h1>The settings</h1> 
    <form class="form-inline"> 
    <input id='apiKey' type='text' name='apiKey' placeholder='your API-Key'> 
    <button id='saveSettings' type='submit' class='btn'>save</button> 
    </form> 
</template> 

<template name="mite"> 
    <div> 
    <h3>...here with key</h3> 
    <p> 
     <a id="optout" href="#">not your key?</a> 
    </p> 
    </div> 
</template> 

當我展示的設置形式,用戶可以設置需要顯示的「蟎蟲」模板的關鍵。現在,當我'提交'表單的頁面重新加載和'蟎'模板顯示。

在蟎模板上,我想要鏈接'不是你的鑰匙?'或者刪除密鑰然後再次顯示設置表單的東西。它適用於重新加載...但是如果沒有Meteor的所有重新加載,我無法做到這一點?我如何在模板中用#if調用模板部分?

- 雷納託

回答

1

您需要一個事件處理程序綁定到你的表單,並使用preventDefault()停止它提交。例如

客戶端JS

Template.settings.events({ 
    'submit':function(event,template) { 
     event.preventDefault(); 
     var apiKey = template.find('input[name=apiKey]').value; 

     //..rest of logic to handle submit event 
     Session.set("key",true); 
    } 
}); 

那麼您可以使用Session.get("showthistemplate")模板助手,以決定是否顯示另一模板或沒有(這是一個普遍的幫手,因爲你把它和不是一個模板:

Handlebars.registerHelper('key',function() { 
    return Session.set("key",true); 
}); 
+0

但現場仍需要重裝,對我想要做的就是這個模板蟎「是隻要鍵設置渲染... – renato 2013-05-05 14:37:11

+1

拿去,模板系統與會面是「被動」的EOR。因此,只要設置或更改'Session.set('key',true)',Meteor將自動爲更新的DOM打補丁,而無需重新加載。它真的很酷! – Akshat 2013-05-05 14:40:08

+0

啊!會議......就是這樣。 'Template.body.key = - > Session.get'key'' works,但'Template.body.key = - > localStorage ['key']'沒有。謝謝! – renato 2013-05-05 19:08:17

相關問題