gpt4 book ai didi

angularjs - 防止 IE 缓存 AngularJS/Restangular

转载 作者:行者123 更新时间:2023-12-04 23:43:27 24 4
gpt4 key购买 nike

在 IE 中,当我更新或销毁列表中的项目时,操作成功,但更新后的列表/数据不会从服务器返回,因此列表不会在 View 中更新。

我尝试了以下方法无济于事:

angular.module('casemanagerApp')
.config(function($stateProvider, $urlRouterProvider, RestangularProvider) {

if (!RestangularProvider.setDefaultHeaders) {
RestangularProvider.setDefaultHeaders({});
}

RestangularProvider.setDefaultHeaders({'If-Modified-Since': 'Mon, 26 Jul 1997 05:00:00 GMT'});
RestangularProvider.setDefaultHeaders({'Cache-Control': 'no-cache'});
RestangularProvider.setDefaultHeaders({'Pragma': 'no-cache'});

$stateProvider

...
});

任何人都可以指出我正确的方向来解决这个问题吗?

最佳答案

我建议配置 $httpProvider而不是 RestangularProvider由于 Retangular 使用 $http幕后:

angular.module('casemanagerApp')
.config(function($stateProvider, $urlRouterProvider, $httpProvider) {
if (!$httpProvider.defaults.headers.get) {
$httpProvider.defaults.headers.get = {};
}

$httpProvider.defaults.headers.get['If-Modified-Since'] = 'Mon, 26 Jul 1997 05:00:00 GMT';
$httpProvider.defaults.headers.get['Cache-Control'] = 'no-cache';
$httpProvider.defaults.headers.get.Pragma = 'no-cache';
//...

});

编辑

我刚刚通读了 restangular.js 代码和 setDefaultHeaders函数看起来没有附加更多的标题,而是覆盖了默认的标题:
object.setDefaultHeaders = function(headers) {
config.defaultHeaders = headers;
object.defaultHeaders = config.defaultHeaders;
return this;
};

这意味着您只设置了 'Pragma' header ,这可能不足以防止缓存。

您可以尝试执行以下操作:
RestangularProvider.setDefaultHeaders({
'If-Modified-Since': 'Mon, 26 Jul 1997 05:00:00 GMT',
'Cache-Control': 'no-cache',
'Pragma': 'no-cache'
});

这样,只有 Retangular 调用会添加标题和常规 http电话不会。

关于angularjs - 防止 IE 缓存 AngularJS/Restangular,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32280035/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com