@run182

Как правильно сделать сброс данных?

Есть экземпляр приложения:
<div id="app">
    <component v-bind:is="currentComponent"></component>
</div>

new Vue({
    el: "#app",
    name: 'root',
    methods: {
        stopGame() {
             this.currentComponent = "game-start-view";
        }
    }
});

1 компонент:
this.$root.$on('levelFinish', function () {
    $this.levels.current++;

    if($this.levels.current <= $this.levels.length) {
        //alert("Следующий уровень!");
    } else {
        alert("Игра закончена.");
        this.$root.stopGame();
    }
});
.
2 компонент (по клику производит действие):
this.$root.$emit('levelFinish');

В 1 компоненте вложен 2 компонент. После вызова stopGame() включается 3 компонент, в котором можно заново выбрать 1 компонент. Когда первый раз проходишь уровни, то все ок, при достижении levels.length игра останавливается. Но когда запускаешь ее повторно, то при каждом клике вызывается окно alert("Игра закончена.");, а при 3 запуске окно появляется дважды.

Получается, что у меня каждый раз создаются новые экземпляры компонента и продолжают работать старые. Как мне при вызове stopGame() прекращать работу с текущим компонентом, чтобы при следующем запуске они не задваивались?
  • Вопрос задан
  • 32 просмотра
Пригласить эксперта
Ответы на вопрос 1
yarkov
@yarkov Куратор тега Vue.js
https://github.com/yarkovaleksei/toster-extension
А где у вас this.levels.current обнуляется? И что за конструкция $this?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
28 мая 2020, в 22:27
5000 руб./за проект
28 мая 2020, в 21:46
20000 руб./за проект
28 мая 2020, в 21:42
10000 руб./за проект