我是否需要在Meteor中重新加载网站?

时间:2013-05-05 12:07:05

标签: meteor

我有这个模板:

<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

1 个答案:

答案 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);
});