1

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

我做错了什么,或者我应该怎么做才能保存这个电子邮件地址以供进一步使用?

4

3 回答 3

0

您收到打印的用户电子邮件,因为在打印之前您调用了您的服务UserService.saveCurrentUserEmail($scope.username);

现在,当您刷新页面(ctrl+f5)时,不会调用此服务,因此将其打印为 null,因为它的初始化为 null 值。

因此,您需要saveCurrentUserEmail在页面加载时调用。

于 2013-08-14T11:43:47.590 回答
0

在页面刷新时,您需要调用服务器以检查您是否登录并更新

$scope.username 

并使用

UserService.saveCurrentUserEmail($scope.username);

或者

您可以在浏览器中使用客户端存储或使用 cookie 到http://docs.angularjs.org/api/ngCookies .$cookieStore 来存储用户信息

于 2013-08-14T11:53:40.193 回答
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');
于 2013-10-31T07:45:54.030 回答