是否可以在父分析中缓存 - 清除/刷新特定的结果?甚至禁用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
答案 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
。这允许在company
和dashboard.overview.*
路由之间移动时从工厂缓存更新dashboard.company.*
。