我有一个带有函数getLoggedInUser
的角度工厂服务,它向我的Node.js服务器发出GET请求。
最初加载页面时,它工作正常(当控制器调用getLoggedInUser
时,该方法运行,并在服务器日志中记录路径/loggedInUser
的GET请求)。
但是,当我点击浏览器(Firefox)中的back
然后forward
按钮时,服务方法确实会运行(其中包含console.log
)但是没有出现此类GET请求服务器记录。
console.log
中$http.get
的{{1}}以某种方式显示结果,即使没有GET请求到达服务器。
使用getLoggedInUser
和back
时,为什么会这样?使用这些按钮时,浏览器是否重新制作任何http请求并仅使用缓存结果?如果是,如何在forward
中为$http.get
禁用此缓存行为? (我已经尝试getLoggedInUser
作为{cache: false}
的第二个参数,但它似乎没有用。)
在Angular.js客户端,服务:
$http.get
在Angular.js客户端,控制器:
// services/auth.js
angular.module('authService', [])
.factory('Auth', ['$http', function($http) {
return {
register: function(username, password) {
return $http.post('/register', {username: username, password: password});
},
login: function(username, password) {
return $http.post('/login', {username: username, password: password});
},
logout: function() {
return $http.get('/logout');
},
getLoggedInUser: function() {
var resp = $http.get('/loggedInUser');
console.log(resp);
return resp;
}
};
}]);
在Node.js服务器中:
// controllers/main.js
angular.module('braidController', [])
.controller('mainController', ['Auth', function(Auth) {
var vm = this;
// initialization
vm.users = [];
vm.selected_convo = undefined;
vm.selected_user = undefined;
vm.user_map = {};
Auth.getLoggedInUser()
.success(function(data) {
vm.selected_user = data.user;
});
}]);