2012-02-14 13 views
3

私たちは、メニュー項目をクリックしたり、アイテムのグリッドを表示したり、グリッド内のアイテムをクリックしたり、グリッド内のアイテムをクリックするという点ではかなり普通のBackbone.jsアプリケーションを持っていますフォームが表示されなくなり、フォームが保存または取り消され、フォームが破棄され、グリッドが表示され、更新されます。backbone.jsマスターの詳細ビューと履歴を管理する

しかし、アプリケーションのさまざまな部分が特定のフォームから取得でき、時にはグリッド - >フォーム - >別のフォームがあり、戻ってくる必要がある最初のフォームに、次にグリッドに移動します。これは実際にはウィザードではなく、ちょっと複雑なフォームなので、「ルートビュー」やブレッドクラムをハードコードで表示したくはありません。

私の質問/問題は、バックボーンルータとの統合方法を理解できないということです。私はちょうどajaxコールでうまくやっていますが、私たちはバックボタン機能が必要です。私が見ているのは、状態オブジェクトまたはモデルがあり、その上にビューのスタックがあり、キャンセルをクリックするとフォームが破棄され、以前のビューがポップされます。

これは、アプリをナビゲートしてスタックを構築する必要があるためブックマークを許可しません。また、キャンセルをクリックしないと(ビューを破棄してスタックをポップする)真ん中のビューでは3番目のビューはまだスタックにあります。

私がしたいのは、URLを持っていることです(私はバックエンドでMVCを使用しているので、コントローラ/アクション/ ID URLを使用するといいでしょう)#usergrid/list then#usergrid/list/user/addupdate/3 then#usergrid/list/user/addupdate/3/someothercontroller/someotheraction/4

しかし、これに対応するためのルータの入手方法を理解することができず、b)解析する必要がありますURL間で何らかの境界を作ることが難しいargsとc)私がルーティングでそれを行うと考えることができる唯一の方法は、基本的にすべてのURLのあらゆるバリエーションを指定することです。

これに関するあらゆる経験や洞察は本当に感謝しています。

答えて

0

全く同じ問題が発生しました。正規表現ルート (これは、驚くべきことに、バックボーンによってサポートされています)より優れています。つまり、routes: { 'some-form': '/showThatForm' }の代わりにroutes: { new RegExp("(.+?)/some-form$"): 'showThatForm' }などを使用してください。

また、このスキームではcentralized event dispatcherが有用であることが分かります。

おそらく、これは最適な解決策ではありませんが、それは私にとってはうまくいきました。

関連する問題