我已经开始使用铁路由器。我有几页“向导”表格。在每个页面的末尾都有一个“下一步”按钮,其中一个href填充了{{pathFor'nextPage'}} href。这很好......但是,当我点击后退按钮时,用户输入的字段值就消失了。
我正在考虑使用jquery的data()调用或使用Meteor的会话来保留输入的值,但我必须相信有更好的(内置?)方法来执行此操作。我只是没有看到任何提示/文档。我搜索了一个包的气氛,发现没有任何东西与它完全匹配(很多形式的助手,比如autoform,但不是特别与铁路由器衔接的东西)。
非常感谢任何建议。
答案 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支持你在一些网络脚本语言中得到的那种服务器端会话,这似乎就是你想到的。