私は現在テスト中Ember.Router
で、特定の基準に一致するときに特定のルートへのアクセスをどのように制限できるか疑問に思っています。私の例では、ユーザーが請求方法に進む前に請求先住所を設定する必要があるチェックアウトプロセスで遊んでいます(たとえば、請求方法ビューは、許可された支払い方法を提供するために請求国を知る必要があります)。
私の試みでは、モデルを検証しようとしています (serialize : function () または enter : function () ?)、指定された値が設定されていない場合、ルーターは以前の状態にリダイレクトする必要があります (これを行う必要がありましたそうしないと、ハッシュが正しく更新されません)。
これが私のコード例のフィドルです
http://jsfiddle.net/mediastuttgart/uMKGt/
編集:
トム・デールの言葉を見つけましたが、この質問とは関係ありませんが、それでも良い答えです:「州の全体的なポイントは、このような状況を回避することです...それらを処理するのは現在の州の責任です。」.
参照。http://github.com/emberjs/ember.js/issues/745
これは理にかなっています。
EDIT2:
これは、場所の方法が「null」に設定されている間は理にかなっていますが。'hash' または 'history' を使用して場所の状態を処理し、ユーザーが /index よりも深いルートでページをリロードする場合、現在のルートは値を検証し、特定の基準が一致しない場合は最終的に前のルートにリダイレクトする必要があります (実際、検証は前のルートに属します)。
簡単に言うと、現在のルート検証は前の検証に依存し、すべての条件が満たされたときに状態にリダイレクトする必要があります。
逆順:
- 配送方法は?(/#/配達/メソッド) いいえ ->
- 請求方法は?(/#/billing/method) いいえ ->
- 配送先は?(/#/配達/住所) いや ->
- 請求先住所 - (/#/billing/address) ここから始めてください。
EmberJS 関係者が問題を解決するのを楽しみにしています :)