Event.target в рекурсии (vue) - PullRequest
0 голосов
/ 14 июля 2020

У меня проблема с event.target в функции рекурсии. Я создал метод clicked , который устанавливает переменную square в event.target , а затем я выполняю некоторые операции после того, как щелкнул этот div, и он работает нормально.

Проблема в том, что я использую рекурсию и вызываю этот метод clicked . Я знаю, почему он не работает, потому что при вызове этого метода в рекурсии нет event.target в этом методе clicked . Вопрос в том, как использовать этот метод clicked в рекурсии.

Вот метод clicked :

clicked() {    
        let square = event.target;
        let currentId = square.id;

        if(this.isGameOver) return;
        if(square.classList.contains('checked') || square.classList.contains('flag')) return
        if(square.classList.contains('bomb')) {
            this.gameOver();
        } else {
            let total = square.getAttribute('data');

            if(total != 0) {
                square.classList.add('checked');
                square.innerHTML = total;
                return
            }
            this.checkSquare(currentId);
        }
        square.classList.add('checked');
    }

Вот часть моего функция рекурсии

checkSquare(currentId) {
        const isLeftEdge = (currentId % this.width === 0);
        const isRightEdge = (currentId % this.width === this.width - 1);

        setTimeout(() => {
            
            if(currentId > 0 && !isLeftEdge) {
                const newId = this.cells[parseInt(currentId) - 1].id;
                const newSquare = document.getElementById(newId);
                this.clicked(newSquare)
            }

            if(currentId > 9 && !isRightEdge) {
                const newId = this.cells[parseInt(currentId) + 1 - this.width].id;
                const newSquare = document.getElementById(newId);
                this.clicked(newSquare);
            }
...