如何在vuejs中设置来自laravel的错误

如何在vuejs中设置来自laravel的错误,laravel,vue.js,Laravel,Vue.js,我试图在Vue中从Laravel检索错误,但我在控制台中收到此错误消息“无法设置未定义的属性'errors'。 我尝试了不同的方法,如直接分配错误和vue的$set()将错误消息设置到数据函数的error对象,但仍然是徒劳的 这是我的密码 export default{ data(){ return{ form: {}, errors:{} } }, methods:{ async onSave() { aw

我试图在Vue中从Laravel检索错误,但我在控制台中收到此错误消息“无法设置未定义的属性'errors'。 我尝试了不同的方法,如直接分配错误和vue的$set()将错误消息设置到数据函数的error对象,但仍然是徒劳的

这是我的密码

 export default{

  data(){
    return{
        form: {},
        errors:{}
    }
 },
 methods:{
      async onSave() {
        await Api().post('/stocks/store',this.form)
        .then()
        .catch(function (error) {
           if(error.response && error.response.status == 422) {
              let errors = error.response.data.errors;
              // this.$set(this.$data.errors,'errors',errors)
              console.log(errors);
              this.errors = errors;
           }
        });  
  }
}
这就是我的控制台显示错误消息的方式

这是来自laravel的错误消息


h如何设置此项。如果仔细查看错误,它会显示带有来自laravel的错误消息的错误

无法设置未定义的属性“errors”

因此,问题是您试图设置一个未定义对象的属性,在本例中:
this
,您的Vue组件

解决此问题的一个简单方便的方法是在
Promise.catch()回调函数中使用arrow函数而不是常规函数。简单地说,正则函数表达式有自己的
上下文,而arrow函数没有

下面是一个代码示例,可以帮助您更好地理解:

newpromise()。然后()
.catch((错误)=>{
if(error.response&&error.response.status==422){
this.errors=error.response.data.errors;
}
});  
要了解有关箭头功能和