我不会在实现Firebase身份验证的函数中调用警报。
我的打字稿代码(启用jQuery):
async emptyAlert() {
const empty = await this.alertController.create({
header: 'Error!',
message: 'All fields are required. Please fill the details and try again',
buttons: ['OK']
});
await empty.present();
}
async errorAlert(message) {
const errorAl = await this.alertController.create({
header: 'Error!',
message: message,
buttons: ['OK']
});
await errorAl.present();
}
doLogin() {
const email = $('#loginEmail').val();
const password = $('#loginPassword').val();
if (email === '' || password === '') {
this.emptyAlert();
} else {
firebase.auth().signInWithEmailAndPassword(email, password).catch(function(error) {
// Handle Errors here.
// const errorCode = error.code;
const errorMessage = error.message;
this.errorAlert(errorMessage);
});
}
}
请注意,上述代码是在constructor(public alertController: AlertController) { }
内的export class LoginPage implements OnInit{…}
之后实现的
我能够调用emptyAlert(),这是类似于errorAlert的警报,但是当我调用errorAlert()时,它说 ERROR TypeError:无法读取未定义的属性'errorAlert'。< / p>
请帮助。 提前谢谢。
答案 0 :(得分:1)
您需要使用 arrow function
,它会自动正确绑定。如果您计划在支持的浏览器上使用,可以转换箭头功能
firebase.auth().signInWithEmailAndPassword(email, password).catch((error) => {
// Handle Errors here.
// const errorCode = error.code;
const errorMessage = error.message;
this.errorAlert(errorMessage);
});
答案 1 :(得分:0)
您好,尝试将您的回调函数替换为箭头函数,例如:
firebase.auth().signInWithEmailAndPassword(email, password).catch((error) => {
// Handle Errors here.
// const errorCode = error.code;
const errorMessage = error.message;
this.errorAlert(errorMessage);
});
希望有帮助。
答案 2 :(得分:0)
使用function(error) {}
时,this
代表新范围。
您应该使用() => {}
,所以它在同一范围内。
firebase.auth().signInWithEmailAndPassword(email, password).catch((error) => {
// Handle Errors here.
// const errorCode = error.code;
const errorMessage = error.message;
this.errorAlert(errorMessage);
});