如何使用angular js中的rootscope将值从一个js文件传递到另一个js文件?

时间:2017-08-17 10:10:39

标签: angularjs controller session-storage angularjs-rootscope

我有js文件让我们说:login.js我已经定义了根范围变量并分配了一些值,如下所示:

mainApp.controller('loginController',function($sessionStorage, $scope, $location, $window, $http, $rootScope) {

        $scope.login = function() {



            $http.get('http://localhost:8080/user/').then(function(response) {
                $scope.users = response.data;

                var len=$scope.users.length;
                var i=0;
                var flag="false";
            for(i=0;i<len;i++)
                {
            if (($scope.login.userName == $scope.users[i].username) && ($scope.login.password== $scope.users[i].password)) 
                {

                $rootScope.uName1 = $scope.users[i].username;
                $sessionStorage.id=$scope.users[i].id;
                $sessionStorage.uName=$scope.users[i].username;


                alert($scope.uName);
                alert($scope.login.userName);
                alert($rootScope.uName1);

                    //$cookieStore.put('id',$scope.users[i].id);
                //  alert("id="+$cookieStore.get('id'));
                    flag="true";
                    break;  
                }
                }

在这里,我可以在“uName1”中获得价值。现在我试图在另一个js文件中访问同一个变量:“document.js”

    app.controller("docCtrl",function($sessionStorage, $scope, $location, $window, $http, $rootScope){  
        $scope.id=$sessionStorage.id;

        alert($rootScope.uName1);

这里我在警报中未定义。我也尝试过使用sessionStorage但没有帮助。如果我错过了什么,请告诉我。非常感谢你。

1 个答案:

答案 0 :(得分:0)

在成功获得ajax结果后,

$rootScope.uName1将可用。如果你的docCtrl控制器在ajax返回结果之前被调用,那么你将得到未定义的