Я пытаюсь использовать VueJS и Axios, чтобы сделать HTTP-запрос к серверу Laravel, чтобы получить JSON, а затем использовать JSON для обновления свойства errorMessage на моем компоненте ,Невозможно установить свойство внутри обещания Axios в Vue JS
Axios.post('/api/login', {
email: this.email,
password: this.password
}).then((response) => {
this.errorMessage = response.message;
}).catch((error) => {
console.error(error);
})
Проблема заключается в том, что он не в состоянии ссылаться this.errorMessage
по какой-то причине, я делаю что-то здесь не так? Я правильно делаю HTTP-запрос, и ответ JSON возвращается так же, как ожидалось, если i console.log
, но когда я пытаюсь манипулировать this.errorMessage
, он говорит, что он не определен, хотя я уже с успехом использовал его в другом месте ...
Вот весь код для этого компонента
export default {
methods: {
submitForm: function(e) {
e.preventDefault();
Axios.post('/api/login', {
email: this.email,
password: this.password
}).then((response) => {
debugger;
this.errorMessage = response.data.message;
}).catch((error) => {
console.error(error);
});
}
},
data: function() {
return {
errorMessage: null,
email: null,
password: null
}
},
components: {
'error': Error
}
}
РЕШЕНИЯ:
оригинального запрос является правильной, жиром функция стрелки должна сохранить значение this
, вопрос был с отладчиком Chrome, который показал значение мне как undefined
даже th они не были ... Извините за глупый вопрос, я надеюсь, что это поможет другим людям столкнуться с такой проблемой.
Это проблема контекста. Показать еще код. –
@JonatasWalker Я обновил вопрос со всем кодом для этого конкретного компонента. –
Возможный дубликат [Vue axios scope scope не привязан к текущему компоненту] (https://stackoverflow.com/questions/41754346/vue-axios-promise-scope-is-not-binding-to-current-component) –