Ваш обработчик времени ожидания устанавливает новый контекст. Вместо
setTimeout(function() {
console.log(this.mutableShow);
self.closeModal();
}, 3000);
вы можете использовать
setTimeout(() => {
console.log(this.mutableShow);
self.closeModal();
}, 3000);
И вам нужно внести аналогичные изменения в
.then(function(response) {
до
.then(response => {
сказав это, я не уверен, что код будет вести себя так, как вы этого хотите. Как только пользователи закроют модальный режим, будет невозможно открыть его снова, поскольку нет способа сделать mutableShow
равным true
.
Отредактировано, чтобы добавить:
Поскольку вы определяете переменную self
, вы также можете использовать это.
console.log(self.mutableShow);
Отредактировано, чтобы добавить:
Не зная конкретно, что такое поведение, лучшее предложение, которое я могу предложить, - это следовать принятым практикам Vue. А именно, после того, как AJAX-запрос будет выполнен успешно, создайте пользовательское событие. Попросите родительский компонент прослушать это событие и при запуске измените значение show
.