AngularJS数据得到重置"刷新后

时间:2015-02-04 13:37:30

标签: javascript angularjs

我有一个非常基本的登录服务,没有真正的身份验证,但是如果我使用$ window.location.href重定向页面刷新,则数据会丢失。 当用户登录'并且页面被重定向到主页,而不是将其解析为loggedIn = false并重定向回登录页面。

如何防止这种情况发生?

Code snippets:

的LoginController

ApiService.getUser($scope.user)
                .success(function (data) {
                    UserService.user = data;
                    UserService.isLogged = true;
                    $window.location.href = '/';
                })

UserService

return {
        user: {},
        isLogged: false
    };

RequireLoginService

return {
    loginRequired: function () {
        var deferred = $q.defer();

        if (!UserService.isLogged) {
            deferred.reject();
            $location.path('/login');
        } else {
            deferred.resolve()
        }

        return deferred.promise;
    }
}

app模块

$routeProvider
    .when('/', {
        templateUrl: 'views/sheet.html',
        controller: 'SheetCtrl',
        resolve: {
            loginRequired: function(RequireLoginService) {
                return RequireLoginService.loginRequired();
            }
        }
    })

2 个答案:

答案 0 :(得分:0)

将用户数据存储在本地存储中,并使用该数据填充输入字段(如果可用)。本地存储中存储数据的有用对象:

var LocalStorageManager = {
    setValue: function(key, value) {
        window.localStorage.setItem(key, JSON.stringify(value));
    },
    getValue: function(key) {
        try {
            return JSON.parse(window.localStorage.getItem(key));
        } catch (e) {

        }
    }
};

存储数据:

LocalStorageManager.setValue("key",data);

要检索该数据:

LocalStorageManager.getValue("key");

答案 1 :(得分:-1)

从另一个角度思考让我找到答案。我只需要在需要数据“刷新”的控制器上放一块手表,而不是试图刷新整个页面。

如下:

$scope.$watch(function () { return UserService.user.username; }, function (value) {
        $scope.user = value;
    });

干杯。