コントローラーでイベントを確認できますが、$routeChangeStart
Angularにとどまるように指示する方法がわかりません。「保存、削除、キャンセルしますか?」などのポップアップを表示する必要があります。ユーザーがキャンセルを選択した場合は、現在の「ページ」に留まります。リスナーがルート変更をキャンセルできるイベントは表示されません。
質問する
11954 次
3 に答える
16
あなたは間違ったイベントを聞いています、私は少しグーグルをしましたが、ドキュメントで何も見つかりませんでした。これの簡単なテスト:
$scope.$on("$locationChangeStart", function(event){
event.preventDefault();
})
グローバルコントローラでは、場所の変更を防ぎました。
于 2012-12-20T01:25:40.510 に答える
2
これを行うための文書化された方法は、ルートのresolveプロパティを使用することです。
'$ route'サービスのドキュメントには、'resolve'プロミスのいずれかが拒否された場合に'$routeChangeError'イベントが発生することが記載されています。1つまり、「$ routeProvider」を使用して、ルートの変更を防ぎたい場合に後で拒否されるPromiseを返す関数を指定できます。
この方法の利点の1つは、非同期タスクの結果に基づいてPromiseを解決または拒否できることです。
于 2013-01-30T17:10:13.390 に答える
0
$scope.$watch("$locationChangeStart", function(event){
event.preventDefault();
});
あなたもこのようにすることができます。この方法の利点は、$ onを指定したif()ステートメントを介してトリガーされないことです...以下のコードは、条件が何であってもトリガーされることがよくわかります。
if(condition){ //it doesn't matter what the condition is true or false
$scope.$on("$locationChangeStart", function(event){ //this gets triggered
event.preventDefault();
});
}
于 2014-02-10T23:45:14.220 に答える