离子缓存不起作用

时间:2016-07-20 07:51:21

标签: caching ionic-framework

我正在使用Ionic开发应用,但缓存并未按预期工作。 每次从root.home.notifs切换到root.home.chats时,chats视图都会刷新(其控制器会重新初始化)。

我有两个标签:

  <ion-footer-bar>
    <ion-tabs class="tab-bottom tabs-striped">
      <ion-tab icon="ion-ios-chatboxes-outline" ui-sref="root.home.chats">
      </ion-tab>
      <ion-tab icon="ion-ios-heart-outline" ui-sref="root.home.notifs">
      </ion-tab>
    </ion-tabs>
  </ion-footer-bar>

这些状态(我的控制器是空的):

.state('root.home', {
  abstract: true,
  cache : true,
  url: '/home',
  templateUrl: 'components/home/templates/home.html'
})
.state('root.home.chats', {
  url: '/chats',
  cache : true,
  controller: 'ChatCtrl',
  templateUrl: 'components/home/templates/home.chats.html'
})
.state('root.home.notifs', {
  url: '/notifs',
  cache : true,
  controller: 'NotifCtrl',
  templateUrl: 'components/home/templates/home.notifs.html'
})

每个视图都有cache-view="true",我已按照$ionicConfigProvider.views.maxCache(100)

的方式配置了缓存

注意:我注意到此错误取决于我首先导航到的状态。有一个名为$state.$go('root.home.notifs')的身份验证系统。更改此选项会更改哪个视图正确缓存

有关如何解决此问题的任何提示?

3 个答案:

答案 0 :(得分:3)

尝试使用此功能缓存转发视图$ionicConfigProvider.views.forwardCache(true);

答案 1 :(得分:1)

试试这个:

.state('root.home', {
  abstract: true,
  cache : true,
  url: '/home',
  templateUrl: 'components/home/templates/home.html'
})
.state('root.home.chats', {
  url: '/chats',
 cache : true,
  controller: 'ChatCtrl',
  templateUrl: 'components/home/templates/home.chats.html'
})
.state('root.home.notifs', {
  url: '/notifs',
 cache : true,
  controller: 'NotifCtrl',
  templateUrl: 'components/home/templates/home.notifs.html'
})

答案 2 :(得分:-1)

只需在HTML中使用缓存视图即可。无需在控制器上使用它。 如果您要刷新页面,请使用<ion-view title="Dashboard" cache-view="false">。 但是,如果您要缓存您的网页,请添加<ion-view title="Dashboard" cache-view="true">或仅<ion-view title="Dashboard">