1

我正在使用角度和弹簧编写应用程序。它必须能够离线工作。在做了一些研究之后,我发现应用程序缓存是最好的方法,因为我需要缓存所有 .css 和 .js 文件。问题是我无法获取 spring 返回并由 $resource 对象要求缓存的数据。当我关闭服务器时,静态数据被缓存,但我在 chrome 的控制台中收到关于他无法检索的 .json 的“GET 错误”。

angular.module('MonService', ['ngResource']).
factory('Projet', function($resource){
return $resource('json/accueil');
});

我尝试过一些方法,例如手动将响应保存在 .json 文件中,然后缓存该文件并将其用作 $resource 的源,但它似乎又长又复杂......

或使用本地存储,例如:

var cache, AmettreDansCache;
donne = {};

cache= window.localStorage.getItem('projets');

  if (!cache) {
   AmettreDansCache= $resource('json/accueil');
   window.localStorage.setItem('projets', JSON.stringify(AmettreDansCache));
   return AmettreDansCache
  }
 else{
    return angular.extend(donne, JSON.parse(cache));
 }

我认为这不起作用,无论如何仅使用应用程序缓存的方法是什么?

4

1 回答 1

2

有一个构建在资源之上的模块,它在读取和写入数据时进行缓存。你应该检查一下。它将在客户端浏览器上保留您的数据副本,当保存失败(由于离线)时,它将在本地保存并继续重试保存。

https://github.com/goodeggs/angular-cached-resource

还有一篇关于模块的小文章:

http://bites.goodeggs.com/open_source/angular-cached-resource/

于 2014-05-28T09:36:18.823 回答