我正在使用 aws Cognito 文档中的这个函数。
cognitoUser.forgotPassword({
onSuccess: function (result) {
console.log('call result: ' + result);
},
onFailure: function(err) {
alert(err);
},
inputVerificationCode() {
var verificationCode = prompt('Please input verification code ','');
var newPassword = prompt('Enter new password ' ,'');
cognitoUser.confirmPassword(verificationCode, newPassword, this);
}
});
我想在 HTML 中显示或不显示 2 个字段,而不是使用提示,以便用户可以填写它们来代替 2 个丑陋的提示。我需要做的就是用更改布尔值的函数替换调用提示的函数。
我试过这个:(出于某种原因,我不得不在成功内部调用changevalue()
否则它不会执行(
cognitoconstruct.forgotPassword({
onSuccess: function (result) {
console.log('call result: ' + result);
this.changevalue()
}, onFailure: function (err) {
alert(err);
}, changevalue() {
console.log('display', this.display)
this.display = true;
}
})
但是,您猜对了:this.display
此函数中未定义,但它不会在外部更改。我不能用this.xxx
调用任何变量或函数。如何更改此值?
我尝试添加 .then(( 或更改函数以使用合法回调,但没有运气。
编辑:我也试过这个:onSuccess: this.changevalue(),
布尔值确实改变了值,但整个事情在e.onSuccess is not a function
后不久就崩溃
问了一个问题后,我的大脑似乎有了创造力的激增-_-
我将调用 forgetgotPassword(( 的整个函数放在一个承诺中,并使用了一个很好的旧回调来切换值......
recoverPassword() {
return new Promise((resolve, reject) => {
let cognitoconstruct = this.user.recover_password(this.forgot_password.value.email);
cognitoconstruct.forgotPassword({
onSuccess: function (result) {
resolve()
}, onFailure: function (err) {
alert(err);
reject();
}
})
})
}
this.recoverPassword().then(() => this.display = true)