所以,我试图在用户登录后在NavCtrl中获取一个对象($ rootScope.User)(因此在onLogin函数运行之后)。
但是,我做错了什么,我无法弄清楚如何解决它。我认为它可能是在获取值之前读取代码。但是,我不太确定。如果有人能帮助我,那就太棒了!
谢谢!
.controller('LoginCtrl', function (Backand, $state, $rootScope, LoginService, $ionicPopup, dataService) {
var login = this;
$rootScope.isLoggedin = null;
function signin() {
LoginService.signin(login.email, login.password)
.then(function () {
onLogin();
}, function (error) {
console.log(error);
$rootScope.showAlert = function () {
var alertPopup = $ionicPopup.alert({
title: 'Login Error',
template: error.error_description
});
};
$rootScope.showAlert();
});
}
function onLogin() {
$rootScope.$broadcast('authorized');
$state.go('tabs.feed');
login.username = Backand.getUsername();
$rootScope.isLoggedin = true;
$rootScope.cUser = Backand.getUserDetails().$$state.value;
console.log($rootScope.cUser);
}
});
.controller('NavCtrl', function($scope, $rootScope, Backand, dataService) {
function getUser() {
$scope.user = $rootScope.cUser;
console.log($scope.user);
}
getUser();
});
答案 0 :(得分:1)
这是一个错字。从c
cUser
一行中删除console.log($rootScope.User);
或执行此操作
console.log($rootScope.cUser);
答案 1 :(得分:1)
可能不是您要寻找的答案,但避免使用$rootScope
来存储全局
使用服务并将其注入
.factory('UserService', function() {
return {
user : {name:'anonymous'}
};
});
然后在控制器中:
.controller('NavCtrl', function($scope, UserService, Backand, dataService) {
$scope.user = UserService.user;
}
答案 2 :(得分:0)
执行此操作$state.go('tabs.feed')
tabs.feed
是否有可能调用NavCtrl?如果是,那么是的,您在设置值之前就已经阅读了它。