0

アイアンルーターを使い始めました。複数ページの「ウィザード」フォームがあります。各ページの最後には、{{pathFor 'nextPage'}} href が入力された href を含む「次へ」ボタンがあります。これはうまくいきます...しかし、戻るボタンを押すと、ユーザーが入力したフィールド値が消えてしまいます。

jquery の data() 呼び出しまたは Meteor のセッションを使用して入力値を保存することを考えていますが、これを行うためのより良い (組み込みの?) 方法があると信じなければなりません。そこにはヒントやドキュメントがありません。パッケージの雰囲気を検索しましたが、それと完全に一致するものは見つかりませんでした (autoform のような多くのフォーム ヘルパーですが、iron-router と特に一致するものはありません)。

どんな提案でも大歓迎です。

4

3 に答える 3

3

複数のページにわたってデータを保存しようとしている場合は、ウィザードに関連するすべてのデータを格納するコレクションを作成します。したがって、ユーザーがウィザードを進めていくと、そのコレクション ドキュメントのさまざまな部分にデータが入力されます。または、他の人が述べたように、データをセッションに保存できます。ユーザーがページを更新すると、そのデータは失われますが、ルートを変更してもアクセスできる可能性があります。

iron-router の dev ブランチでは、名前付き yield の動作が少し異なることに注意してください。リリース バージョンでは、レイアウトの名前付き歩留まりはすべての新しいルートで置き換えられます。つまり、レンダリングされたテンプレートが同じであっても、ページから完全に引き裂かれ、再度レンダリングされます。dev ブランチでは、テンプレートが実際に変更された場合にのみ、名前付きの yield リージョンが再レンダリングされます。

したがって、あなたの場合(開発ブランチで)、次のようなことを行うことができます(概念を説明するためだけに):

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>
于 2013-09-25T06:29:37.403 に答える
0

私が見た経験則は次のとおりです。ページの読み込み間で値を保持したい場合 (これは戻るボタンが行うことであり、前のページをリロードします)、それらを URL に入れます。

Meteor は、一部の Web スクリプト言語で得られるようなサーバー側セッションをサポートしていないと思います。これは、あなたが考えているようです。

于 2013-09-11T14:15:06.247 に答える