обновление
Если ваш магазин зарегистрирован с Vue, похоже, он должен работать. Если ваш $dispatch
работает вне обещания, вы можете попробовать сохранить контекст this
в другой переменной
sendData(){
this.isLoading = true;
const that = this;
this.$http
.post('/add-message' , {message:this.message, id_rooms:this.$route.params.id_rooms})
.then((response) => {
console.log(response.json());
if(response.body != 'Error'){
that.message = '';
that.$dispatch('new_message', response.json());
} else{
that.isLoading = false;
}
}, (response) =>{
});
}
или просто $dispatch
sendData(){
this.isLoading = true;
const $dispatch = this.$dispatch;
this.$http
.post('/add-message' , {message:this.message, id_rooms:this.$route.params.id_rooms})
.then((response) => {
console.log(response.json());
if(response.body != 'Error'){
this.message = '';
$dispatch('new_message', response.json());
} else{
this.isLoading = false;
}
}, (response) =>{
});
}
предположение здесь, но попробуйте вместо этого вызвать это
this.$store.dispatch('new_message', response.json());
в качестве альтернативы, ваша проблема может быть проблемой области (видя, что это вызывается из обещания)
, если у вас есть функция, объявленная как это в обработчике обещаний then(function(response){this.$store.dispatch('new_message', response.json());})
это может быть связано с областью действия
, вместо этого вы можете попробовать использовать стрелочную функцию
then((response) => {
this.$store.dispatch('new_message', response.json());
})