2

既存の Web アプリに対話機能を追加する backbone.js を学習しています。最初のページの読み込み時に、 docs で提案されてreset()いる方法を使用して、いくつかの初期データをページにブートストラップしています。これはうまくいきます。また、新しいモデル インスタンスを作成することもでき、ビューは期待どおりにそれらを処理します。それらは初期データと一緒に表示され、すべて問題ありません。(新しいデータもデータベースに問題なくヒットします。)

ただし、別のページへのリンク (バックボーン ルートなどを使用せず、通常のリンクのみ) をクリックしてから、ブラウザーの [戻る] ボタンをクリックすると、以前に作成した新しいモデルが消えてしまいます。古い初期データのみが表示されます。デバッグを行ったところreset()、ページが読み込まれるたびにメソッドが実行されることがわかったので、おそらくそれが、追加した追加データを壊していると思われます。(ただし、実際にページを更新すると、新しいデータが再び表示されます。これは、ブートストラップも行われているためです。)

新しく追加されたデータを (古いデータと共に) 取得するために使用できることはわかってfetch()いますが、(a) ページが読み込まれるたびに余分な要求が発生するため、(b) そのため、それを回避しようとしています。ドキュメントは、それは理想的ではないと言っています。

では、戻るボタンを使用しても (一時的に) 消えないようにするにはどうすればよいでしょうか?

4

1 に答える 1

0

ページは、モデル、ビュー、コレクション、およびルーターを読み込みます。ページ セットはreset(ブートストラップ) を通じてコレクションをアップします。ユーザーはリンクをクリックして別のページに移動し、戻るボタンをクリックします。今、面白いことが起こっている、

  • ルーターは、ページが読み込まれる前 ([戻る] ボタンをクリックしたとき) に URL を照合します。この照合中に、コレクションに新しいデータが含まれていることを確認してから、collection.fetch().
  • これにより、常に最新のものを取得し、サーバーに1回だけヒットします(コレクションが空であるか、新しいデータが含まれていません)
于 2012-05-24T05:45:26.623 に答える