Angular JS中的多级对象在更深层次上返回null

时间:2014-11-28 13:12:19

标签: javascript angularjs object

我有这个奇怪的问题,但可能只是我不知道自己在做什么。

我的这个对象有以下结构:

userData.user
  data: 
    email: ""
    name: ""
    etc.

图像:

http://i.imgur.com/iPuUzjw.png

值得一提的是userData是一个工厂。我将通过全局服务检索的数据存储在那里。

当我访问userData.user时,我在开发控制台中看到所有细节。但是,当我尝试访问userData.user.data时,所有值都是“null”而我,但是当我返回某个级别时,我仍然可以看到所有数据。

我做错了什么?我刚刚复杂化了整个结构吗?

 app.factory('sessionAuth', function($http){        
    var uData = null;        
    function load(path, $email, $password, $passwordConfirm, $uName) {           
        return $http({
                    url: path,
                    method: 'GET',
                    params: {email: $email, password: $password, passwordc: $passwordConfirm, username: $uName, rM: null}
                });            
    }

    if(uData != null) {        
        return uData;

    } else {            
        uData = {    
            getUserData : function($email, $password) {
                return load('system/login.php', $email, $password);
            },
            getSession : function() {
                return load('system/LoggedinCheck.php');
            },
            registerUser : function($uName, $email, $password, $passwordConfirm) {
                return load('system/register.php', $email, $password, $passwordConfirm, $uName);
            }
        };

        return uData;        
    }
});

这个我用作全局变量。

app.factory('userData', function(){        
    var u = {};        
    return {
        user: u
    };        
});

这是获取数据的控制器。

 controllers.controller('lrFormCtrl', function($scope, sessionAuth, userData, $location){        
    $scope.userData = userData.user;

    $scope.login = function(u){
        sessionAuth.getUserData($scope.email, $scope.password).then(function(data){
            $scope.userData.data = data.data;
            if($scope.userData.data.name.length > 0) {
                //$location.path('/main');
            }
        });
    };
});

这是使用userData的指令

 app.directive('transitionLogin', function(userData, $location) {        
    return function(scope, element, attrs) {            
        console.log(userData.user.data);

        function checkToggle(){                
            var cList = element[0].classList;                
            for(i = 0; i < cList.length; i++) {

                if(cList[i] == 'ng-login-toggled') {
                    return true;
                }                    
            }
            return false;                
        };

        var signIn = angular.element(document.getElementsByClassName('signIn-toggle')[0]);

        signIn.on('click', function(){
            console.log(checkToggle());
            console.log(scope.userData);
            if(checkToggle()) {
                scope.login();
                console.log(userData.user.data);
                if(userData.user.data.name.length > 0) {
                    TweenMax.to(element, 0.3, {y: 100, opacity: 0, ease: Quad.easeOut}).delay(0.2);
                    $timeout(function(){$location.path('/main')}, 550, true);
                }
            }                
        });            
    }        
});

然而,值得注意。当我检查用户是否设置为“记住”他的登录检查时,检索数据并且我可以浏览userData对象而没有任何错误。

当我尝试在指令

中访问它时,似乎只是一个问题

0 个答案:

没有答案