Angular没有看到JSON文件中的更改

时间:2016-03-25 22:24:51

标签: angularjs caching

所以我有这段代码来访问JSON文件中的数据。

taskAppControllers.controller('MainMenuCtrl', ['$scope','$http',
 function($scope, $http){
  $http.get('data/main-menu.json').success(function(data){
    $scope.mainMenuOptions = data
  });
}]);

一切都很好。但是当我更改JSON文件时,一切都保持不变。如果我重命名JSON文件并访问它,它将显示更新的数据,如果之后我将其重命名,它将在编辑之前显示JSON的输出。它可能会将数据保存在浏览器内存或类似内容中。它与缓存相关的问题。如何修复/重置它?

3 个答案:

答案 0 :(得分:2)

听起来像缓存问题,尝试将随机参数附加到URL,以强制从服务器获取新的副本:

$http.get('data/main-menu.json?' + Math.random())

答案 1 :(得分:2)

我不相信这实际上是一个特定角度的问题。您的浏览器可能会缓存这个。

如果main-menu.json应该是静态的,请考虑在调试会话期间执行ctrl + F5而不是F5。如果需要更新,您可以更改与缓存相关的响应标头,让浏览器知道它不应该缓存,或者您可以添加一个"缓存破坏者"通过添加时间戳作为请求参数来请求。但是,这并不是处理它的首选方式。

答案 2 :(得分:0)

假设我理解正确,Angular将不会以您期望的方式动态更新。它只会在您重新加载页面时进行更新,或者如果您对其进行编码以从服务器重新加载数据,则会进行更新。我会调用$ http服务。

您可能希望轮询服务器以检查数据是否更改或使用SignalR之类的东西将新数据“推送”到浏览器。

相关问题