我目前正在开发一个Angular/Ionic/Cordova项目,我们最近升级到了最新的Ionic beta.从项目之前使用的版本开始,这引入了视图缓存.然而,它也引入了一个问题.
该应用程序面向客户,是以数据为中心的.但是,用户必须进行身份验证才能查看与其帐户关联的数据; 当用户注销并登录到另一个帐户时,由于视图仍然被缓存,因此会显示最后一个帐户的视图.
应用程序仍应在用户登录时缓存视图,因为它有助于使应用程序感觉更快,但应在用户注销时清除缓存.
设置cache-view="false"不是一个选项,因为它会完全禁用缓存.
我也尝试过设置$ionicConfig.views.maxCache(0);,然后回到默认值10,希望它会在这样做时清除缓存,但它没有效果.
我能想到的最后一件事就是在用户登录时触发一个事件,刷新当前加载到视图中的所有数据 - 但是,这需要比我认为应该花费更多的精力.
有没有办法简单地清除视图缓存?
ABC*_*.ca 65
在app.js的状态定义中,您可以添加cache:false以禁用缓存(请参阅Ionic文档中的状态提供程序中的禁用缓存.或者,您可以保留缓存,除非您知道数据已更改.
$state.go($state.currentState, {}, {reload:true})$ionicHistory.clearCache().then(function(){ $state.go('app.fooState') })注意,后者需要clearCache来返回一个promise.查看我在此pull请求中所做的更改,并将您现在拥有的clearCache的实现与我的相关性进行比较:https://github.com/driftyco/ionic/pull/3724
Nir*_*dhi 19
我偶然发现了一个类似的情况,其中登录另一个用户显示我陈旧/缓存的视图.您可以cache: false在状态定义级别执行,但完全禁用应用程序中该状态的缓存.
当用户进入应用程序的登录/登录状态时,您可以清除所有缓存的视图和历史记录(如您所述).似乎很理想.
// code inside your signin controller
$scope.$on("$ionicView.enter", function () {
$ionicHistory.clearCache();
$ionicHistory.clearHistory();
});
Run Code Online (Sandbox Code Playgroud)
小智 8
您也可以通过设置做cache:false你的$stateProvider:
$stateProvider.state('myState', {
cache: false,
url : '/myUrl',
templateUrl : 'my-template.html'
})
Run Code Online (Sandbox Code Playgroud)
你在寻找这样的东西吗?:
$ionicHistory.clearCache();
Run Code Online (Sandbox Code Playgroud)
编辑:
Ionic 的 github 中存在一个问题: Issue
| 归档时间: |
|
| 查看次数: |
67595 次 |
| 最近记录: |