if语句后未调用新警报

时间:2019-08-13 13:50:27

标签: javascript typescript ionic-framework

我希望用户可以选择更改密码。所以首先他有第一个警报,在那里他有一个用于他的旧pw的输入,然后重复一次。然后应立即发出新警报,他可以输入两次新密码。但是永远不会调用此警报。我想知道错误是否出在if语句中,但到目前为止,我认为我已经正确完成了所有操作。

page.ts

public password1 = '';
public password2 = '';

constructor(public alertController: AlertController) {}

async changePw() {
    const alert = await this.alertController.create({
      header: 'Change your Password?',
      message: 'Type in your old password?',
       inputs: [
      {
        name: 'password1',
        placeholder: 'Old password',
        type: 'password'

      },
      {
        name: 'password2',
        placeholder: 'Repeat old password',
        type: 'password'
      }
    ],
    buttons: [
      {
        text: 'Cancel',
        role: 'cancel',
        handler: data => {
          console.log('Cancel clicked');
        }
      },
      {
        text: 'Submit',
        handler: async data => {
          if (this.password1 === this.password2 && this.password2 !== '') {
            const alert2 =  await this.alertController.create({
              header: 'Change your Password?',
              message: 'Type in your old password?',
               inputs: [
              {
                name: 'password3',
                placeholder: 'New password',
                type: 'password'

              },
              {
                name: 'password4',
                placeholder: 'Repeat new password',
                type: 'password'
              }
            ]
            });
            await alert2.present();
          } else {
            // invalid pw
            return false;
          }
        }
      }
    ]
    });

    await alert.present();
  }

1 个答案:

答案 0 :(得分:0)

我不确定这是您的完整代码还是只是在寻找逻辑处理。

但是我认为主要的问题是您不使用从警报控制器获取的数据。因此,请检查“提交”按钮处理程序上数据的使用情况。在此示例中,使用data.password1作为输入字段的名称,即可测试输入。

因此在您的代码中,password2 !== ""始终为假,因为您没有设置它。

但是,您仍然必须将旧密码纳入此功能。

const alert1 = await this.aAlertController.create({
            header: 'Change your Password?',
            message: 'Type in your old password?',
             inputs: [
            {
              name: 'password1',
              placeholder: 'Old password',
              type: 'password'

            },
            {
              name: 'password2',
              placeholder: 'Repeat old password',
              type: 'password'
            }
          ],
          buttons: [
            {
              text: 'Cancel',
              role: 'cancel',
              handler: data => {
                console.log('Cancel clicked');
              }
            },
            {
              text: 'Submit',
              handler: data => {
                if (data.password1 === data.password2 && data.password2 !== '') {
                  const alert2 =  this.aAlertController.create({
                    header: 'Change your Password?',
                    message: 'Type in your old password?',
                     inputs: [
                    {
                      name: 'password3',
                      placeholder: 'New password',
                      type: 'password'

                    },
                    {
                      name: 'password4',
                      placeholder: 'Repeat new password',
                      type: 'password'
                    }
                  ]
                  });
                  alert2.present();
                } else {
                  // invalid pw
                  return false;
                }
              }
            }
          ]
          });

          await alert1.present();
        }

希望这会有所帮助。