Tôi đang tìm một cách chắc chắn để có 'id người dùng hiện tại' trong tất cả các trình điều khiển của tôi có sẵn. Sử dụng: Firebase Đăng nhập Đơn giản: Xác thực Email/Mật khẩuNHÀ MÁY: lấy user.id hiện tại cho Đăng nhập Đơn giản Firebase (Email/Mật khẩu)
Ida của tôi: Tôi cần một 'Nhà máy' mà tôi có thể đưa vào bộ điều khiển, để luôn có 'id người dùng hiện tại'.
tôi đã đưa ra với mã này:
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;
}
]);
điều khiển đơn giản nhất của tôi trông giống như:
function ToDoCtrl($scope, User) {
$scope.MyUser = User;
$scope.MyUser.test = 'Test';
}
Trong HTML (partials góc) i có:
<h2>{{MyUser.id}}</h2>
<h2>{{MyUser.email}}</h2>
<h2>{{MyUser.provider}}</h2>
<h2>{{MyUser.test}}</h2>
=> id , email, nhà cung cấp là 'không xác định'. Trong giao diện điều khiển, tôi thấy 'NHÀ MÁY: Người dùng: Đăng nhập thành công:' với đúng đối tượng - Đối tượng.
=> Tải không đồng bộ về vấn đề dữ liệu?
Tôi cũng đã thử nghiệm (không có may mắn):
$timeout(function() {
currentUser = user;
}
một NHÀ MÁY như vậy sẽ rất hữu ích! Cảm ơn bạn đã chỉ cho tôi đúng hướng!
Sửa 1.1: Bây giờ, với $ rootscope Hack
=> Cùng tác - MyController là quá nhanh - nhà máy chậm lại.
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 cho bất kỳ đề xuất hữu ích nào! Wonderin cách người khác giải quyết chuyện này!
Tôi đã tạo một hệ thống đăng nhập vững chắc với những thứ lửa này tôi sẽ đăng khi tôi về nhà sau một lát. Nó có thể là hoàn hảo cho những gì bạn đang cố gắng làm ở đây. – jaredwilli