我正在使用带有laravel的vuejs应用程序,但是我无法真正从对象中获取组件,我应该怎么做
<script>
import axios from 'axios';
export default {
data : function (){
return {
email: '',
password: '',
remember: 'true',
errors: [],
}
},
methods : {
validateemail(mail){
var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(mail);
},
attemptlogin(){
this.errorsarray = [];
axios.post('/login', {
email: this.email,
password: this.password,
remember : this.remember
}).then(function (response) {
location.reload();
}).catch(function (error) {
var code = error.response.status;
console.log(this.email);
if(code == 422){
this.errors.push("Incorrect information");
}else{
console.log('no');
this.errors.push('Internal server error please try again later')
}
}).then(function () {
console.log('here');
});
},
},
computed : {
isValidInput() {
return this.validateemail(this.email) && this.password;
}
}
}
它还会显示这种错误
未捕获(承诺)TypeError:无法读取未定义的属性“电子邮件”
我不知道为什么会有帮助? 预先感谢
答案 0 :(得分:1)
使用() => {}
函数语法而不是function() {}
。前者将正确绑定this
。
.catch(error => {
console.log(this.email);
})
如果要使用function() {}
,则必须显式绑定this
:
.catch(function (error) {
console.log(this.email);
}.bind(this))
有关bind
的更多信息,请参见this answer。