【问题标题】:AngularJS Caching a REST requestAngularJS 缓存 REST 请求
【发布时间】:2013-03-02 10:10:30
【问题描述】:

我是 angularJS 新手,对缓存等有疑问。

我有一个包含两个步骤的向导,我希望能够单击返回和下一步,并且仍然按照用户的方式填写表单。

在我的 page1Partial 我有这个:

<li ng-repeat="pick in picks | orderBy:orderProperty">
<b><span ng-bind="pick.name"/></b>
<input type="checkbox" ng-model="pick.checked" ng-click="updateBasket(pick)">
</li>

当我转到下一页时,然后单击返回,复选框被清除,这是因为我对 java 服务的 RESful 调用再次被调用。如何缓存此响应?

从我的控制器,这每次都会访问我的 REST Web 服务。

$scope.picks = Pick.query();

我的服务

angular.module('picksService', ['ngResource']).
    factory('Pick', function ($resource) {
        return $resource('rest/picks/:id', {}, {
            'save': {method: 'PUT'}
        });
    });

【问题讨论】:

  • 使用 $http 对象将配置属性缓存设置为 true
  • 我在哪里设置呢?这是我服务的某个地方吗?
  • 尝试使用 shaunlim 对这个问题的回答中建议的方法:stackoverflow.com/questions/12772255/…

标签: javascript rest caching angularjs


【解决方案1】:

如果你将$resource替换为$http,那么你可以直接使用下面的代码

$http({
    method: 'PUT',
    url: 'url',
    cache:true
});

【讨论】:

  • 我没有明确设置这个缓存值。 Angular 1.4.x 中的默认缓存值是多少?我的第一个 angularjs / CXF Rest 应用程序在各种浏览器上的行为不同。它没有在 IE 中加载新创建的数据,并且似乎使用旧缓存。但在 Firefox 和 Chrome 上运行良好。
【解决方案2】:

从 1.1.2 (commit) 开始,所有的 $httpConfig 选项都直接暴露在 $resource 操作对象中:

return {
  Things: $resource('url/to/:thing', {}, {
    list : {
      method : 'GET',
      cache : true
    }
  })
 };

【讨论】:

    猜你喜欢
    • 2018-07-25
    • 2014-12-01
    • 2016-10-16
    • 2016-04-05
    • 2014-07-18
    • 2010-10-11
    • 2010-10-13
    • 1970-01-01
    相关资源
    最近更新 更多