如果您尝试跨多个页面保存数据,我会创建一个集合来存储向导的所有相关数据。因此,当用户通过向导进行操作时,您正在填充该集合文档的不同部分。或者,正如其他人所提到的,您可以将数据存储在 Session. 如果用户刷新页面,该数据将丢失,但可以通过您的路线更改访问。
值得注意的是,在 Iron-router 的 dev 分支中,命名 yield 的工作方式略有不同。在发布版本中,布局的命名产量在每条新路线上都会被替换。换句话说,即使渲染的模板是一样的,它仍然是完全从页面上撕下来重新渲染的。在 dev 分支中,仅当模板实际更改时才重新渲染命名的屈服区域。
因此,在您的情况下(在 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>