myApp.controller('RegistrationController', ['$scope',
function($scope) {
var auth = firebase.database().ref();
// console.log("auth::"+auth);
$scope.login = function() {
$scope.message = "Welcome " + $scope.user.email;
}; //login
$scope.register = function() {
console.log($scope.user.email);
console.log($scope.user.password);
console.log("jdxnx::" + auth);
firebase.auth().createUserWithEmailAndPassword($scope.user.email, $scope.user.password).then(function() {
$scope.message = "Hi" + $scope.user.email + " you have registered"
}).catch(function(error) {
$scope.message = error.message;
console.log($scope.message);
}); // //createUser
}; // register
}
]); // Controller
在上面的代码中,我单击提交我的注册函数运行,然后在firebase.auth().createUserWithEmailAndPassword
内部运行但在我从firebase.auth().createUserWithEmailAndPassword($scope.user.email,$scope.user.password)
函数得到响应之前,我的事件从寄存器函数出来然后返回因为html页面中的{{message}}
值保持空白而页面,但在后端firebase.auth().createUserWithEmailAndPassword($scope.user.email,$scope.user.password)
函数进程中获取响应,但事件在进程完成之前返回到页面。我希望该函数事件应该等到我得到响应。
请注意,我使用的是firebase 3.x.x。
答案 0 :(得分:2)
firebase.auth().createUserWithEmailAndPassword
是一个异步函数,不属于Angular.js。因此,Angular.js无法识别其回调到$scope
所做的修改,并且它不会更新页面。在回调完成后尝试添加$scope.apply()
。
firebase.auth().createUserWithEmailAndPassword($scope.user.email, $scope.user.password).then(function() {
$scope.message = "Hi" + $scope.user.email + " you have registered"
$scope.apply();
}).catch(function(error) {
$scope.message = error.message;
console.log($scope.message);
$scope.apply();
});
您可能感兴趣的其他内容:
$scope
,并且已经有一段时间了。您可能想要查看Controller-As语法(Angular.js 1.3+)或更好的组件(Angular.js 1.5 +)。