Vue.js 使用Vue和sweetalert的表单警报未注册Vue存储?

Vue.js 使用Vue和sweetalert的表单警报未注册Vue存储?,vue.js,sweetalert,Vue.js,Sweetalert,我有一个简单的登录表单,其中有一个按钮,该按钮有一个反应文本{{msg}},默认情况下,它表示登录,当用户发送表单时,它将更改为登录。。。。如果表单失败,那么我想说再次发送 我正在使用sweetalert处理警告,并打算更改sweetalert中的msg数据。但是由于某些原因,它会返回一个未定义的this.msg html 登录 Javascript 导出默认值{ 资料{ 返回{ msg:登录 } }, 方法:{ 提交表格{ const loginda=$login\u form.array;

我有一个简单的登录表单,其中有一个按钮,该按钮有一个反应文本{{msg}},默认情况下,它表示登录,当用户发送表单时,它将更改为登录。。。。如果表单失败,那么我想说再次发送

我正在使用sweetalert处理警告,并打算更改sweetalert中的msg数据。但是由于某些原因,它会返回一个未定义的this.msg

html

登录 Javascript

导出默认值{ 资料{ 返回{ msg:登录 } }, 方法:{ 提交表格{ const loginda=$login\u form.array; 常数v=这个; this.msg=日志记录。。。 $.ajax{ url:/身份验证, 方法:邮寄, 标题:{ 内容类型:application/json }, 数据:JSON.stringify{ 策略:本地, 电子邮件:loginData[0]。值, 密码:loginData[1]。值 }, 成功:函数数据{ window.location.replace/; this.msg=已登录! }, 错误:函数错误{ 如果error.status==401{ 电子邮件或密码; this.msg=再试一次?; console.logthis.msg//返回未定义的 }否则,如果错误。状态===400{ 电子邮件或密码; this.msg=再试一次?; }否则{ 斯瓦莱罗,再试一次!; this.msg=再试一次?; } } }; } } 我还尝试了Promissions,但它也返回未定义的this.msg


如果我在sweetAlert中输入console.logthis.msg,它将返回未定义。

我怀疑它的上下文行为。试试这个

export default {
 data() {
   return {
     msg: "Log in"
    }
  },
methods: {
submitForm() {
  const self = this;
  const loginData = $("#login_form").serializeArray();
  const v = this;

  self.msg = "logging..."
  $.ajax({
    url: "/authentication",
    method: "POST",
    headers: {
      "Content-Type": "application/json"
    },
    data: JSON.stringify({
      strategy: "local",
      email: loginData[0].value,
      password: loginData[1].value
    }),
    success: function (data) {
      window.location.replace("/");
       self.msg = "logged!"
    },
    error: function (error) {
      if (error.status === 401) {
        swal("Wrong email or password");
        self.msg = "Try again?";
        console.log(self.msg) //returns undefined
      } else if (error.status === 400) {
        swal("Wrong email or password");
        self.msg = "Try again?";
      } else {
        swal("Error. Try again!");
        self.msg = "Try again?";
      }
    }
  });
}
}

使用箭头函数,即success:data=>{…}取而代之。同样的错误可能重复for你的常数v=这用于什么?似乎没有什么。可能是残余代码。将此作为常量添加成功。谢谢你,我将确保下次与我的同事更深入地检查代码。没问题,请稍后接受我的答案,如果有,谢谢。