这不是缓存问题,或者至少不是你想的那样。
Services and factories are singletons in angular
,这意味着它们在第一次被请求注入之前被初始化一次。之后,服务功能将不运行,所有控制器将接收相同的对象。
(对于服务,注入的对象是通过将服务函数用作构造函数来创建的)
如果您希望在每次加载视图时轮询某些数据,则必须在控制器中初始化请求(无论如何,您都可以通过服务来执行此操作)-这会在不重新加载浏览器页面的情况下重新初始化。
此外,您似乎在使用承诺和返回值方面存在一些问题。从错误和成功处理程序返回没有意义,因为它们的返回值将被丢弃。看见
this discussion
有关从异步函数“返回”的更多信息。
如果您只返回
$http
promise来自服务中的一个函数,那么每个控制器都可以适当地处理promise,最终将服务代码缩减为:
.service('userInfo', function ($http, $cookies) {
var userId = $cookies.id;
console.log("UI Cookies", $cookies);
//this function returns the promise returned by $http.get
this.getData = function(){
return $http.get('/api/findProfile/' + userId, { cache: false});
};
})