2

アプリケーションの一部のルートはゲームであり、ユーザーが実行中のゲームを離れようとしているときに確認プロセスを実装したいと考えています。

ルーターを「停止」する方法はありますか?

私はそれを試しました:

Router.configure({

    onBeforeRun: function() {
        Router.stop();
    }
});

しかし、それはすべてを破壊します。

何か案が ?

4

2 に答える 2

2

このようなものを使用できますか?(Iron-Router 自体はまだ使用していません)
基本的には、リンクのクリック イベントをキャッチし、確認ダイアログをスローするだけです。[はい] をクリックすると、ルート変更をトリガーするルーターの go メソッドが実行されます。それ以外の場合、クリックは無視されます。

代わりに元の href 値を使用するように更新コードを編集します

Meteor.templateName.events({
  'click .someLink': function(e) {
    e.preventDefault();

    if (game.isRunning && confirm('are you sure you want to leave?') ) {
      // Router.go('routeName');  // edit, see comment below
      Router.url(e.target.href);
    }     

  }
});
于 2013-10-14T03:50:24.367 に答える
1

これは古い投稿ですが、解決しました。ここに私の解決策があります:

Router.route('/myPath', {
    unload: function (e, obj) {
        if(Session.get("hasChanged")){
            if (confirm("Are you sure you want to navigate away ?")) {
                // Go and do some action
            }else{
                // Redirect to itself : nothing happend
                this.redirect('/myPath');
           }
        }
    }
}
于 2016-05-04T14:56:33.887 に答える