我正在寻找一种可靠的方法来使所有控制器中的“当前用户标识”可用。 使用:火力地堡简单登录:电子邮件/密码认证FACTORY:获取当前user.id Firebase简单登录(电子邮件/密码)
我IDA:我需要一个“工厂”至极,我可以注入我的控制器, 有“当前用户ID”始终可用。
我想出了这个代码:
app.factory('User', ['angularFire',
//Get Current UserID
function(angularFire){
console.log ('FACTORY: User');
var currentUser = {};
var ReturnStr = '';
var ref = new Firebase("https://myFIREBASE.firebaseio.com/");
var authClient = new FirebaseAuthClient(ref, function (err, user) {
if (err) {
ReturnStr = 'FACTORY: User Error: ' + err;
console.log (ReturnStr);
//var User = ReturnStr;
} else if (user) {
console.log ('FACTORY: User: Login successfully:');
console.log (user);
currentUser = user;
} else {
//console.log ('-----------User: Logged Out ---------------');
ReturnStr = 'FACTORY: Logged out: Redirect to Login';
console.log (ReturnStr);
window.location.href = "/login.php";
}
});
return currentUser;
}
]);
我简单的控制器看起来像:
function ToDoCtrl($scope, User) {
$scope.MyUser = User;
$scope.MyUser.test = 'Test';
}
在HTML(角谐音)我有:
<h2>{{MyUser.id}}</h2>
<h2>{{MyUser.email}}</h2>
<h2>{{MyUser.provider}}</h2>
<h2>{{MyUser.test}}</h2>
=> ID ,电子邮件,提供者是'未定义'。在控制台中,我看到了'FACTORY:User:Login successfully:'和正确的user - Object。
=>异步加载数据的问题?
我也尝试(没有运气):
$timeout(function() {
currentUser = user;
}
这样的工厂将是非常有用的! 谢谢你指点我在正确的方向!
编辑1.1:现在,$ rootscope破解
=>效果相同 - 是myController的太快 - 工厂放缓。
app.factory('User', ['$rootScope', '$timeout', 'angularFire',
//Aktueller Benutzer auslesen
function($rootScope, $timeout, angularFire){
console.log ('FACTORY: User');
var currentUser = {};
var ReturnStr = '';
var ref = new Firebase("https://openpsychotherapy.firebaseio.com/");
var authClient = new FirebaseAuthClient(ref, function (err, user) {
if (err) {
ReturnStr = 'FACTORY: User Error: ' + err;
console.log (ReturnStr);
//var User = ReturnStr;
} else if (user) {
console.log ('FACTORY: User: Login successfully:');
//currentUser = user;
$timeout(function() {
ReturnStr = 'FACTORY: Inside timout';
console.log (ReturnStr);
currentUser = user;
console.log (currentUser);
$rootScope.myUser = user;
$rootScope.myUserID = user.id;
$rootScope.loggedIn = true;
$rootScope.$apply();
return currentUser;
});
} else {
//console.log ('-----------User: Logged Out ---------------');
ReturnStr = 'FACTORY: Logged out: Redirect to Login';
console.log (ReturnStr);
//var User = ReturnStr;
window.location.href = "/login.php";
}
});
return currentUser;
}
]);
TAHNKS对于任何有帮助的建议!知道别人怎么解决这个问题!
我做了一个坚实的登录系统,当我回到家时,我会发布这些火的东西。这对你在这里尝试做的事情可能是完美的。 – jaredwilli