特定のビューがロードされたときにAngular JSが保存する履歴をクリアする方法はありrouteProvider
ますか?
angularを使用してパブリックインストールを作成していますが、履歴がたくさん蓄積されるため、ホームページが読み込まれたときにクリアしたいと考えています。
特定のビューがロードされたときにAngular JSが保存する履歴をクリアする方法はありrouteProvider
ますか?
angularを使用してパブリックインストールを作成していますが、履歴がたくさん蓄積されるため、ホームページが読み込まれたときにクリアしたいと考えています。
for(var a=0; a < $rootScope.$viewHistory.histories.root.stack.length; a++ ){
console.log(" for history remove " + a );
delete $rootScope.$viewHistory.histories.root.stack[a];
}
コントローラー内で、ビューを変更する関数を追加しました。
$scope.changeView = function(view) {
$location.path(view);
$location.replace();
}
次に、ビュー内で、この関数を呼び出すために ng-click を追加しました。
<div ng-click="changeView('/app/new_view')">
angular Docs から $location.replace() メソッドを使用して、新しいビューを追加する代わりに、履歴スタックの最上位ビューを置き換えます。
replace
次回 $location サービスがブラウザと同期されるときに、新しい履歴レコードを作成する代わりに、最後の履歴レコードを置き換える必要があることを $location サービスに伝えるために使用できる特別なメソッドがあります。
参照: https://docs.angularjs.org/guide/ $location
var dummyState = {app: 'resto'};
// set up history state
if (!$window.history.state) {
$window.history.pushState(dummyState, '');
}
// when history back
$window.onpopstate = function() {
console.log('window.onpopstate:url=', $window.location.href);
console.log('window.onpopstate:history.state=', $window.history.state);
// repopulate history state so we get the popstate event again
$window.history.pushState(dummyState, '');
};