我正在使用angularjs处理Web应用程序。我需要在整个应用程序中使用用户的电子邮件地址,如何将其存储以供进一步使用?
目前我正在做的是:
我创建了一个用户服务
'use strict';
var module = angular.module('moduleName');
module.factory('UserService',['$resource',function($resource){
var currentUserEmail = null;
return {
getUserResource : function(){
return $resource('users',{email:'@email'});
},
saveCurrentUserEmail : function (email){
currentUserEmail = email;
},
getCurrentUserEmail : function (){
return currentUserEmail;
}
};
}]);
登录时,我使用用户服务存储用户电子邮件地址:
UserService.saveCurrentUserEmail($scope.username);
现在,当我转到另一个视图时,在控制器中,用户电子邮件就是我所期望的。
console.debug("Current User email "+UserService.getCurrentUserEmail());
打印用户的电子邮件地址
但是当我用(ctrl + f5)刷新页面时。然后当前用户的电子邮件为空。
Current User email null
我做错了什么,或者我该如何保存此电子邮件地址以供进一步使用?
答案 0 :(得分:0)
您将收到打印的用户电子邮件,因为在打印之前,您调用了服务UserService.saveCurrentUserEmail($scope.username);
现在当您刷新页面(ctrl + f5)时,不会调用此服务,因此它将打印为null,因为它的初始化为null值。
因此,当您的网页加载时,您需要致电saveCurrentUserEmail
。
答案 1 :(得分:0)
在页面刷新时,您需要调用服务器以检查您是否登录并更新
$scope.username
并使用
存储它UserService.saveCurrentUserEmail($scope.username);
或
您可以在浏览器中使用客户端存储或使用cookie到http://docs.angularjs.org/api/ngCookies。$ cookieStore来存储用户信息
答案 2 :(得分:0)
使用$ cookieStore而不是使用服务。 http://docs.angularjs.org/api/ngCookies。$的CookieStore
emailAddress
例如是 - "a@a.com"
//That's how i am assigning value
$cookieStore.put('emailAddress', $scope.user.emailAddress);
//thats how i am retrieving it
addr = $cookieStore.get('emailAddress');