2016-08-08 13 views
0

私は動作しない角度で$ locationサービスを使用する非常に簡単なコードを持っています。

angular.module("app",[]).run(function($rootScope) { 
    var $offFunction = $rootScope.$on("$locationChangeStart", function(e) { 
     if (confirm("Are you sure")) 
     return $offFunction(); 
     return e.preventDefault(); 
    }); 
}); 

は、私はちょうど、ユーザーがページを残すことを望んでいるかどうかを確認したいが、私はバーや私は、ブラウザの[戻る]ボタンを押すと、アドレスを変更しようとした場合、それは動作しません。ここで

はシオマネキです:http://jsfiddle.net/5dnm2/19/

+0

whatsは '$ offFunction()'ですか? –

+0

アドレスバーに新しいURLを入力すると、アプリケーションはURLが変更されたことを知らない。 – zeroflagL

答えて

0

あなたは初期化プロバイダの$の場所を追加する必要があります。 Visit http://jsfiddle.net/5dnm2/41/ run(function($rootScope, $location) {...})

+0

それはうまくいきますが、私が望んでいた目的に合ったものではありません。これは、ページをロードするときの確認ダイアログのみを表示します。私は、ユーザーがページを離れるときに確認を表示したかったのです(プレーンなjavascriptでevent.onbeforeunloadというイベントを使用した場合など)。実際にこのコードを実行するには、ユーザーがブラウザの[戻る]ボタンをクリックしても動作させる必要がありますが、動作させることはできません。何か案は? – user3483282

+0

私はあなたを正しく理解していれば、あなたは同等のURLを試すことができます: '$ locationChangeStart '、function(event、next、current){ if(next!== current){ var answer =確認( 'あなたがこのページから移動してよろしいです'); 場合(答え!){ event.preventDefault();} } }); ' –

関連する問題