1

ブラウザの履歴を処理する満足のいく方法が見つかりません。確かにHistory.jsのような素敵なプラグインがあります。しかし、例を挙げましょう:

ユーザーにさまざまなことを尋ねる複数ページのフォームがあります。次のページに送信するたびに (実際には同じで、HTTP-POST 変数に応じてビューが変わるだけです)、ページにいくつかのアニメーションと変更があります。

  • メインコンテンツは次のフォームに変わります (slideUp/slideDown を使用)
  • プログレスバーの状態がアニメーションで変わります
  • このバーの下に、入力の一部に関する情報がフェードインします

今はかなり基本的なことですが、すべてのアニメーション (最後の 2 つの部分) がすべての状態 (異なる div、異なる入力ソース) で異なり、それらを非常に一般的なものにする方法がわからないため、私はすでに苦労しています。それらを個別に指定する必要はありません。

私はそれを受け入れることができましたが、ユーザーが戻るボタンを押すと、それらすべてのアニメーションを再度 (逆に) 再定義する必要があります。content-load は確かに問題ありません。基本的には ajax-load でファイルをリロードするだけです:

  • pushstate入力データをstateObj送信時に実行します
  • そのため、バインドされた「statechange」イベントで content-load を実行できます

言ったように、残りは私を狂わせます。

4

4 に答える 4

2

Backbone.js を入手して学習することを強くお勧めします。jQuery とうまく連携し、変更された MVC パターンで Web サイトをセットアップします。また、URL の変更を処理し、適切なコードを実行する優れたシステムも備えています。

スライドに関しては、アニメーションを逆にしたい場合、それを追跡するのは少し面倒かもしれません. 画面間をスライドしているときにアプリで行ったことは、スライドするときに上にスライドしたり、下にスライドしたりするのではなく、スライド先の DOM 内の要素を常にスライド元の要素の後に移動することでした。そうすれば、スライドは常に同じ方向に進み、アニメーションがおかしくなることはありませんでした。

于 2011-12-25T17:21:59.353 に答える
1

jQuery を含むJavaScriptMVCを試すことができます。正確な要件を満たしているかどうかはわかりませんが、JavaScript と MVC です...

于 2011-12-25T17:18:01.003 に答える
0

厳密には MVC ではありませんが (JavaScript にはいくつかあります)、バックボーン jsは MVC の概念に基づいた素晴らしいフレームワークであると思いますが、JavaScript の言語と環境により適したものに作り直されています。

于 2011-12-25T17:20:15.210 に答える
0

いろいろと調べた後、私は自分の問題に対する最も単純で最良の解決策、つまり基本を使用することに分解することにしました。

ユーザーが戻る/進むボタンを押したときにすべてを前後にアニメーション化する代わりに、サイト全体を ajax でリロードして、選択したサイトの stateObj で HTML/PHP フォールバックを使用できるようにしました。

ただし、History.js の問題は、onstatechange-event で pushState と戻る/進むボタンを区別できないことです。そこで、History.js から pushstate を使用した標準の W3C の動作に格下げしました。1.8.0 の更新により、内部と外部の状態変化を区別できるようになります。

すべての回答に感謝しますが、これが最も正確な対処方法だと思いますが、MVC だけを使用しても問題は解決しません。他の回答を受け入れなかった理由です。

于 2012-01-13T13:41:14.073 に答える