我有这个奇怪的问题,但可能只是我不知道自己在做什么。
我的这个对象有以下结构:
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对象而没有任何错误。
当我尝试在指令
中访问它时,似乎只是一个问题