我已经在这台前敲了几天,似乎无法弄清楚....
我的路线看起来像这样:
$stateProvider.state({
name: 'core.portfolio',
url: '/portfolio',
controller: 'portfolioController',
controllerAs: 'vm',
templateUrl: 'app/portfolio/partials/base.html',
deepStateRedirect: true,
sticky: true,
resolve: {
portfolioPrepService: function (portfolioService) {
return portfolioService.getPortfolio();
},
}
}).state({
name: 'core.portfolio.company',
url: '/1/:companyId',
resolve: {
companyPrepService: companyPrepService
},
views: {
'company': {
controller: 'CompanyController',
controllerAs: 'vm',
templateUrl: 'app/portfolio/company/company.tmpl.html'
}
},
sticky: true,
deepStateRedirect: true
}
);
和我的服务这样:
function companyService($http, API_CONFIG) {
var service = {};
service = {
getCompany: getCompany
};
function getCompany(id) {
return $http({
method: 'GET',
url: API_CONFIG.url + 'companies/' + id + '/?embedded={"round":1}',
cache: false
})
}
return service;
}
当我在CompanyController中拨打API时, companyService.getCompany(companyId)
该服务返回一个过时的对象,当我查看服务器日志时,我看不到任何休息调用。
当我刷新页面时,API调用是再次(按PrepService进行),但是当在CompanyController上触发时,它会返回过时的数据,而在服务器上没有休息。
。有人知道为什么会发生这种情况吗?它与解决方案有关还是它处于粘性状态?
$http
返回诺言,所以尝试这样做,
companyService.getCompany(companyId).then(function(res){
console.log(res)
})
并查看任何请求的开发人员工具的网络选项卡
看来,根据这个问题,这是如何解决问题的入侵:
$ http禁用缓存不起作用#1586
var req = {
method: 'GET',
url: 'http://example.com',
headers: {
'Cache-Control' : 'no-cache'
}
}
您必须使用这些标头调用每个API调用。将其添加到每个呼叫中,然后冲洗您的缓存。此后应进行游泳。