AnjularJs - 我们应该在$ rootScope中存储对象

时间:2016-10-10 01:42:38

标签: angularjs

我是AngularJS的新手。我们在页面之间管理数据吗? 1)我有一个用户登录的应用程序。数据库返回用户详细信息。我需要在其他页面上使用用户详细信息。其他页面不是登录页面的子集,即它们有自己的范围。所以我应该将用户存储在rootScope中,例如$ rootScope.user = user。在rootScope中转储这些数据看起来不是一个好习惯。有没有更好的办法? 2)第二个问题与第一个问题有关。如果我想在第2页上添加一个监视范围变量的$ watch,我该怎么做。

2 个答案:

答案 0 :(得分:1)

使用Factory,并存储必要的登录详细信息

app.factory('AuthenticationService', [ '$location','$http', function( $location,$http){
var currentUser;
return {
    login: function(username, password){
        var endPoint = "url";
        var jsonData = {
            username: username,
            password: password
        };
        var jsonString = JSON.stringify(jsonData);

        $http.post(endPoint, jsonString,{headers: {'Content-Type': 'application/json'}}).success(function (data,status, headers ){

            if(data.access == "ok")
            {
                $location.path("learning");
            }
            else
            {
                $location.path("error");
            }

        });
    },
    logout: function(){},
    isLoggedIn: function(){},
    curUser: function(){return currentUser}
};
}

DEMO

答案 1 :(得分:1)

我对你的问题有几点想法:

1)使用Cookie而不是rooScope,你也可以使用LocalStorage(小心使用,它不适用于所有的探险家)

2)你在寻找发射器和听众是一个很好的解释https://toddmotto.com/all-about-angulars-emit-broadcast-on-publish-subscribing/

祝你好运。