在IE中,当我更新或销毁列表中的项目时,操作成功,但更新的列表/数据不会从服务器返回,因此列表未在视图中更新.
我试过以下无济于事:
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,因为Restangular在幕后使用$http:
angular.module('casemanagerApp') .config(function($stateProvider,$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”标头,这可能不足以阻止缓存.
您可以尝试执行以下操作:
RestangularProvider.setDefaultHeaders({ 'If-Modified-Since': 'Mon,26 Jul 1997 05:00:00 GMT','Cache-Control': 'no-cache','Pragma': 'no-cache' });