5

特定のビューがロードされたときにAngular JSが保存する履歴をクリアする方法はありrouteProviderますか?

angularを使用してパブリックインストールを作成していますが、履歴がたくさん蓄積されるため、ホームページが読み込まれたときにクリアしたいと考えています。

4

4 に答える 4

1
 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];
     }
于 2014-10-18T11:17:22.723 に答える
0

コントローラー内で、ビューを変更する関数を追加しました。

$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

于 2013-10-08T12:03:51.653 に答える
0
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, '');
};
于 2015-07-26T08:45:43.247 に答える