无法在离子 4 的函数内调用警报
Can't call an alert inside a function in ionic 4
我不想在实现 Firebase 身份验证的函数内调用警报。
我的 Typescript 代码(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: Cannot read 属性 'errorAlert' 未定义.
请帮忙。 提前致谢。
您需要使用arrow function
,这是自动绑定的correctly.you如果您计划支持浏览器,可以转译箭头函数
firebase.auth().signInWithEmailAndPassword(email, password).catch((error) => {
// Handle Errors here.
// const errorCode = error.code;
const errorMessage = error.message;
this.errorAlert(errorMessage);
});
您好尝试用箭头函数替换您的回调函数,例如:
firebase.auth().signInWithEmailAndPassword(email, password).catch((error) => {
// Handle Errors here.
// const errorCode = error.code;
const errorMessage = error.message;
this.errorAlert(errorMessage);
});
希望对您有所帮助。
当你使用function(error) {}
时,this
代表新的作用域。
你应该使用 () => {}
所以它在相同的范围内。
firebase.auth().signInWithEmailAndPassword(email, password).catch((error) => {
// Handle Errors here.
// const errorCode = error.code;
const errorMessage = error.message;
this.errorAlert(errorMessage);
});
我不想在实现 Firebase 身份验证的函数内调用警报。
我的 Typescript 代码(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: Cannot read 属性 'errorAlert' 未定义.
请帮忙。 提前致谢。
您需要使用arrow function
,这是自动绑定的correctly.you如果您计划支持浏览器,可以转译箭头函数
firebase.auth().signInWithEmailAndPassword(email, password).catch((error) => {
// Handle Errors here.
// const errorCode = error.code;
const errorMessage = error.message;
this.errorAlert(errorMessage);
});
您好尝试用箭头函数替换您的回调函数,例如:
firebase.auth().signInWithEmailAndPassword(email, password).catch((error) => {
// Handle Errors here.
// const errorCode = error.code;
const errorMessage = error.message;
this.errorAlert(errorMessage);
});
希望对您有所帮助。
当你使用function(error) {}
时,this
代表新的作用域。
你应该使用 () => {}
所以它在相同的范围内。
firebase.auth().signInWithEmailAndPassword(email, password).catch((error) => {
// Handle Errors here.
// const errorCode = error.code;
const errorMessage = error.message;
this.errorAlert(errorMessage);
});