3

バックボーン アプリケーションを構築する最適な方法を考えています。問題は、さまざまな複雑な状態があり、それぞれがいくつかのビューを表示し、他のすべてが非表示になっていることです。

バックボーンでこれを処理する標準的な方法は何ですか? 私が考えた2つのことは、ルーターによる状態の制御(ビューの非表示/表示メソッドの呼び出し)か、ビューにルートイベントをリッスンさせることです。

最初の方法の問題は、ルーターがアプリケーション内に存在するすべてのビューを認識する必要があることです。

この 2 番目の解決策の問題は、すべてのビューがすべてのイベントをリッスンし、それらのいずれかを非表示にする必要があることです。

無駄のない解決策を教えてくれてありがとう。

4

2 に答える 2

2

FSM マシンを使用して、アプリケーションの状態を変更します。各状態は、適切なビューを表示および非表示にします。私のビューはトランジションを使用してアニメーション化するため、状態の変更はより複雑で、単純な表示/非表示です。ある状態から別の状態へのアニメーション化です。ニーズに合わせてhttps://github.com/fschaefer/Stately.jsをフォークしました。

于 2012-10-30T11:03:36.917 に答える
1

このような問題について、私の個人的な経験を共有できます。それが最善の解決策かどうかはわかりませんが、私にとってはうまくいきました。

いくつかのルーターがあり、それぞれがそれに属するビューを非表示/表示する必要があるため、私の問題はさらに悪化しました。私が選んだ解決策は、あなたが検討した最初の選択肢と似ていました。

私のルーターには、既存のすべてのビューを保持する配列があります。状態が変化し、ルート コールバックが実行されると、他のすべてのビューがこの単純なコードで非表示にview[i].hide()なり、適切なビューが表示されます。さらに制御したい場合は、View モデルと Views コレクションを作成できます。

新しいルートを追加するときに、すべてのビューにルート イベントを追加する必要がないため、より良い解決策だと思います。さらに、ビューはルーターから分離されたままであり、その存在を認識していない可能性さえあります。

于 2012-10-30T09:05:04.647 に答える