保留路线之间的表格输入?

时间:2013-09-11 04:47:37

标签: meteor iron-router

我已经开始使用铁路由器。我有几页“向导”表格。在每个页面的末尾都有一个“下一步”按钮,其中一个href填充了{{pathFor'nextPage'}} href。这很好......但是,当我点击后退按钮时,用户输入的字段值就消失了。

我正在考虑使用jquery的data()调用或使用Meteor的会话来保留输入的值,但我必须相信有更好的(内置?)方法来执行此操作。我只是没有看到任何提示/文档。我搜索了一个包的气氛,发现没有任何东西与它完全匹配(很多形式的助手,比如autoform,但不是特别与铁路由器衔接的东西)。

非常感谢任何建议。

3 个答案:

答案 0 :(得分:3)

如果您尝试在多个页面中保留数据,我会创建一个存储向导的所有相关数据的集合。因此,当用户通过向导进行操作时,您将填充该集合文档的不同部分。或者,正如其他人所提到的,您可以将数据存储在Session中。如果用户刷新页面,该数据将会丢失,但可以在路径更改中访问。

值得注意的是,在铁路由器的开发分支中,命名产量的工作方式略有不同。在发布版本中,布局的命名率将在每个新路由上替换。换句话说,即使渲染的模板是相同的,它仍然完全撕下页面并再次渲染。在dev分支中,如果模板实际更改,则仅重新呈现命名的yield区域。

所以在你的情况下(在dev分支中)你可能会做类似下面的事情(只是为了说明概念):

Router.map(function () {
  this.route('stepOne', {
    template: 'wizard', 
    path: '/stepOne',
    action: function () {
      Session.set('wizardStep', 'stepOne');
      this.render('wizard'); // same as this.render()
    }
  });

  this.route('stepTwo', {
    template: 'wizard',
    path: '/stepTwo',
    action: function () {
      Session.set('wizardStep', 'stepTwo');
      this.render();
    }
  });
});

<template name="wizard">
  {{#ifStepEquals "stepOne"}}
    <!-- do something with step one -->
  {{/ifStepEquals}}

  {{#ifStepEquals "stepTwo"}}
    <!-- do something here with step two -->
  {{/ifStepEquals}}
</template>

答案 1 :(得分:0)

编辑答案,就像在Jeopardy上一样:

将您的系列表格制作为隐藏或显示的一系列div,直到结束时都存在,并且没有任何移动或保留。

答案2:让插件上的向导编辑方式与他们在更新时编辑的方式相同。创建一个初始文档,其中一个标志指示未完成,像在编辑期间那样从DOM更新其值,然后在清除所有向导屏幕后更新标志。模板变得更加可重复使用。

答案 2 :(得分:0)

我见过的经验法则是:如果你想在页面加载之间保留值(这是后退按钮的功能,重新加载上一页),请将它们放在URL中。

我不认为Meteor支持你在一些网络脚本语言中得到的那种服务器端会话,这似乎就是你想到的。