angularjs - 清除 Angular $resource的缓存

标签 angularjs ngresource

在我的用例中,我有购物车和订单项。我的 REST 服务具有以下资源 URL:

get|post|delete|put api/v1/carts/:cartId

get|post|delete|put api/v1/carts/:cartId/lineItems/:lineItemId

get|post|delete|put api/v1/lineItems/:lineItemId

问题是当我这样做时:

delete api/v1/carts/Default/lineItem/:lineItemId

然后我这样做:

get api/v1/carts/Default 

Angular 不会通过服务器获取购物车,而是从缓存中获取购物车,缓存将删除的订单项返回到购物车中 我尝试了各种技巧,尝试通过添加 {cache: false} 选项来禁用缓存,但无法让它工作 我能够让它工作的唯一方法是向

发出 POST 请求
api/v1/carts/Default

主体为空,告诉 Angular 资源已更改并清除缓存。 尽管它有效,但它看起来像是一个黑客解决方案,所以我在想是否有人可能对我做错了什么提出建议。

最佳答案

获取请求由浏览器缓存。最简单的方法是使用时间戳: 而不是 GET/user/100 使用 GET/user/100?time=120229393 有了这样的请求,您将始终访问服务器。

如果你在多个请求中需要这个,你可以让http拦截器在请求中添加时间戳参数。

关于angularjs - 清除 Angular $resource的缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34254276/

相关文章:

指令中使用的 Angularjs ui-select

javascript - 在没有 new 运算符的情况下使用 $resource 时出现问题

angularjs - ngResource 将 POST 参数附加到 url

angularjs - 处理 save() 方法 $ngResource 上的错误回调

angularjs - 有条件地将 Angular 指令属性添加到元素

angularjs - 在 Protractor 测试中获取当前浏览器名称

javascript - 在 Angularjs 中将字符附加到文本框

angularjs - 使 angular.service 更加模块化

angularjs - 如何将 header 动态传递给 angularjs 的 $resource

javascript - 将数组样式查询参数传递给 Angularjs 中的资源