刷新特定父级解析缓存

时间:2018-02-15 06:05:55

标签: angularjs angular-ui-router

是否可以在父分析中缓存 - 清除/刷新特定的结果?甚至禁用ui-router解析特定项目的缓存?

我有这样的设置,其中company由抽象父状态提供给2个子状态。 controller.dashboard.company对此对象进行更新,但当用户导航到dashboard.overview并返回dashboard.company时,将加载旧解析的值。只有页面的硬刷新才能从API中获取新数据。

router.js

.state('dashboard', {
  abstract: true,
  resolve: {
    company: ['api.company', 'user', function ($company, user) {
        return $company.id(user.company);
    }]
  }
})
.state('dashboard.overview', {
  url: '/',
  templateUrl: 'dashboard/overview/overview.html',
  controller: 'controller.dashboard.overview',
  resolve: { ... more API calls ... }
})
.state('dashboard.company', {
  url: '/company',
  templateUrl: 'dashboard/company/company.html',
  controller: 'controller.dashboard.company',
  resolve: { ... more API calls ... }
})

我可以致电$state.reload();,但这会从dashboard向下反映每一个决心,这是大约30个不应该被重新获取的不同状态。

我正在通过服务(api.company)缓存内存中的公司对象,但由于解析不会重新启动,因此永远不会再次查询服务缓存。

有什么想法吗?

Angular 1.6.8 / ui-router 1.0.14

2 个答案:

答案 0 :(得分:0)

尝试将其添加到transitions.Onstart函数

 $transitions.onStart({},function ($transition) {
    console.log("\n %c From: " + $transition.$from() + " To: " + 
    $transition.$to() + "\n\n");
      $transition.addResolves({ company: ['api.company', 'user', function  
            $company, user) {
            return $company.id(user.company);
        }]
     });
   }) 

答案 1 :(得分:0)

我最终搬了#34;公司"解决直接的儿童状态,让我的工厂级缓存以保持水分。所以,仍然没有进行API调用,但我在路由父更改之间获得了最新的company。这允许在companydashboard.overview.*路由之间移动时从工厂缓存更新dashboard.company.*