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>

当我显示设置表单时,用户可以在其中设置显示“螨”模板所需的键。现在,当我“提交”表单时,页面会重新加载并显示“螨”模板。

在 mite 模板上,我想要那个链接“不是你的钥匙?” 或删除密钥然后再次显示设置表单的东西。它适用于重新加载......但如果没有 Meteor 中的所有重新加载,我不能这样做吗?我如何在正文模板中使用#if 来“调用”模板部分?

——雷纳托

4

1 回答 1

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);
});
于 2013-05-05T13:04:04.687 回答