17

通常の JavaScript には window.onbeforeunload があります。HTML5ルートを使用してAngularJSで同じことをエミュレートするにはどうすればよいですか?

$beforeRouteChange がありますが、私が知る限り、イベントをキャンセルすることはできません。

明確にするために: window.onbeforeunload は、ページから離れた場所への移動には機能しますが、ページ内の移動には機能しません。たとえば、あるコントローラーから別のコントローラーに HTML5 history API を介して移動する場合などです。

4

4 に答える 4

16

$locationChangeStartキャンセルできるイベントがあります。

まだ文書化されていないため、これがサービスにどのように影響するかを説明する単体テストを次に示し$routeます。 https://github.com/angular/angular.js/blob/v1.0.1/test/ng/routeSpec.js#L63

これは、ユーザーのように確認を提供しませんwindow.onbeforeunload。同じ効果を得るには、独自のダイアログ サービスを導入し、場所の変更プロセスを再起動する必要があります (または、単に synchronous を使用することもできます$window.confirm)。

于 2012-08-27T16:59:56.210 に答える
5

angular-ui-router を使用している場合は、$stateChangeStartの代わりに使用する必要があり$locationChangeStartます。

于 2015-03-26T10:06:47.960 に答える