我目前正在开发 Angular/Ionic/Cordova 项目,我们最近升级到了最新的 Ionic beta。从项目之前使用的版本开始,这里引入了视图缓存。然而这样做也带来了一个问题。
该应用程序面向客户,并且非常以数据为中心。然而,目前用户必须进行身份验证才能查看与其帐户关联的数据;当用户注销并登录到另一个帐户时,由于视图仍然被缓存,因此它们会显示最后一个帐户的视图。
当用户登录时,应用程序仍应缓存视图,因为这有助于使应用程序感觉更快,但当用户注销时,应清除缓存。
Setting cache-view="false"
不是一个选项,因为它会完全禁用缓存。
我也尝试过设置$ionicConfig.views.maxCache(0);
然后又回到默认值 10,希望这样可以清除缓存,但没有效果。
我能想到的最后一件事是在用户登录时触发一个事件,刷新当前加载到视图中的所有数据 - 但是,这比我认为应该付出的努力要多一些。
有没有办法简单地清除视图缓存?
在 app.js 的状态定义中,您可以添加cache:false
禁用缓存(请参阅禁用状态提供程序内的缓存 http://ionicframework.com/docs/api/directive/ionNavView/在离子文档中。或者,您可以继续缓存,除非您知道数据已更改。
- 如果您已经在该页面上,您可以执行以下操作:
$state.go($state.currentState, {}, {reload:true})
- 如果您处于另一个状态并且想要返回到通常缓存的状态但希望刷新它,您可以这样做,
$ionicHistory.clearCache().then(function(){ $state.go('app.fooState') })
请注意,后者需要 clearCache 返回一个承诺。查看我在此拉取请求中所做的更改,并将您现在拥有的clearCache 实现与我的进行比较:https://github.com/driftyco/ionic/pull/3724 https://github.com/driftyco/ionic/pull/3724
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)