在angularjs项目中,我希望获取登录的用户数据并以html格式使用此数据。
为此,我有一个sessionService.js
向服务器发送请求并从中获取响应。我在sessionService.js
中有以下代码:
login: function(email, password) {
$http.post('/api/sessions', {user: {email: email, password: password} })
.then(function(response) {
service.currentUser = response.data.user;
if (service.isAuthenticated()) {
//$location.path(response.data.redirect);
$location.path('/record');
}
});
},
requestCurrentUser: function() {
if (service.isAuthenticated()) {
alaki = $q.when(service.currentUser);
console.log("1"+JSON.stringify(alaki));
return alaki;
} else {
return $http.get('/api/users').then(function(response) {
service.currentUser = response.data.user;
console.log("2"+JSON.stringify(service.currentUser));
return service.currentUser;
});
}
},
isAuthenticated: function(){
return !!service.currentUser;
}
当我第一次致电requestCurrentUser
时,if (service.isAuthenticated())
正在运行,我在Chrome控制台中遇到错误:
TypeError: Cannot read property 'then' of undefined
如果我再次刷新页面,则此时else
语句及以上错误不会发生。我不知道解决这个问题。如何解决此错误?
答案 0 :(得分:0)
由于返回了$ http承诺,因此您需要在return
之前添加$http.post()
。因此,新代码看起来像 - return $http.post('/api/sessions'..)