如何存储用户详细信息以便在angularjs中进一步使用

时间:2013-08-14 11:36:40

标签: angularjs angularjs-scope

我正在使用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

我做错了什么,或者我该如何保存此电子邮件地址以供进一步使用?

3 个答案:

答案 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');