12

ルート変更を防止または一時停止する方法を見つけようとしています。私の編集画面では、ユーザーが変更を保存していないときに (戻るボタンまたはその他のメカニズムで) ナビゲートした場合、ページを離れたいことを確認するように促したいと思います。と非常に似てwindow.onbeforeunloadいますが、ルーター経由です。

以前のバージョンの Ember のステートチャートは、使用できる遷移オブジェクトを提供していました。ember-latest では、これはもはや当てはまらないようです。では、これについて最善の方法は何ですか?


編集:

上記の質問は古く、リストされている回答は古いものです。Ember には、これを処理するためのネイティブな方法があります。ドキュメントを参照してください: http://emberjs.com/guides/routing/preventing-and-retrying-transitions/

4

3 に答える 3

8

あなたがしたいことは、トランジションを条件付きにすることです。直接使用する代わりにEmber.Route.transitionTo、次のようなものが必要です。

var transitionAfterConfirmation = function(target){
  var defaultEvent = Ember.Route.transitionTo(target),
      event = function(stateManager, context){
          if( confirm("Really go?")){
              defaultEvent(stateManager,context);
          }
      };

  event.transitionTarget = target;

  return event;
};

例については、 http://jsfiddle.net/hjdivad/KsHCN/を参照してください 。

于 2012-07-26T16:02:04.150 に答える
2

状態を終了する前に使用可能なハンドラーがないため (おそらく何かを見逃した可能性があります)、それが可能かどうかはわかりません。enter stateenterState() コードのトリガーを見ると、2 つの状態間の遷移を中断またはキャンセルできないようです。

これは Tom Dale のAllow canceling state transitionsで説明されていると思います。

あなたの場合、おそらく、ユーザーがキャンセルした場合は前の状態にリダイレクトするか、ユーザーが受け入れた場合は新しい状態に移動する責任がある中間状態を宣言できます。実装するよりも書く方が簡単だと言わざるを得ません:(

于 2012-07-23T22:57:49.620 に答える