有人可能知道ionic的$ionicHistory是有一个清空缓存的命令的,命令如下:
clearHistory()
Clears out the app’s entire history, except for the current view.
但是此命令然并卵,所以我又看了一下API和源码发现了如下方法:
clearCache()
Removes all cached views within every ionNavView
. This both removes the view element from the DOM, and destroy it’s scope.
- Returns: promise
/** * @ngdoc method * @name $ionicHistory#clearCache * @return promise * @description Removes all cached views within every {@link ionic.directive:ionNavView}. * This both removes the view element from the DOM, and destroy it's scope. */ clearCache: function(stateIds) { return $timeout(function() { $ionicNavViewDelegate._instances.forEach(function(instance) { instance.clearCache(stateIds); }); }); },
API地址:http://ionicframework.com/docs/api/service/$ionicHistory/
源码地址:https://github.com/driftyco/ionic/blob/master/js/angular/service/history.js#L1
然后写了如下代码去清空页面缓存:
var views = $ionicHistory.viewHistory().views; var stateIds = []; for(var id in views){ stateIds.push(views[id].stateId); } $ionicHistory.clearCache(stateIds).then(function(){ $location.path('/login');//设置路由地址 })