我有这个模板:
<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>
当我显示设置表单时,用户可以设置显示“螨”模板所需的密钥。现在,当我'提交'表单时,页面会重新加载并显示'mite'模板。
在mite模板上,我想把这个链接“不是你的钥匙?”或删除密钥的内容,然后再次显示设置表单。它可以重新加载...但是如果没有在Meteor中重新加载,我不能这样做吗?如何使用正文模板中的#if调用模板部分?
- Renato
答案 0 :(得分:1)
您需要将事件处理程序绑定到表单,并使用preventDefault()
停止提交。 e.g
客户端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);
});