@PetrTar

Почему @click срабатывает через раз?

в template компонента такой код:
<td :style="{background: colorCell[k]}" :class="getClass(k)" v-for="(typeFlat,k) in build" :key="k" @contextmenu.prevent="addString($event, building[j].id, k)" @click="changeCell(build[k], k, build.id)">
                    <span v-if="isLink(typeFlat)">
                        <a  href="javascript:void(0)">
                            {{ typeFlat.substr(0, lengthString) }}
                        </a>
                    </span>
                    <span v-else>
                        {{ typeof typeFlat === 'string' ? typeFlat.substr(0, lengthString) : typeFlat}}
                    </span>
                <div style="display: none" :ref="build.id+k">
                    <textarea :value="message" @change="message = $event.target.value" @blur="finishСhange(j)"/>
                    <select @blur="finishСhange()" @click="setMessage($event)" v-model="message">
                    </select>
                </div>
            </td>

на событие @click срабатывает метод, который меняет флаг this.eventFlag:
changeCell(val, title, id){
console.log(this.eventFlag)
if (this.eventFlag){
                this.eventFlag = false
            } else {
                this.eventFlag = true
            }
}

При клики на ячейку eventFlag должен переключаться, но он то срабатывает, то не срабатывает. Закономерности "не срабатывания" не удалось выявить"
  • Вопрос задан
  • 148 просмотров
Пригласить эксперта
Ответы на вопрос 2
@bagzon
Backend PHP, NodeJs, JS
Иди от обратного, удаляй все лишнее, все атрибуты, меню и т.п, и проверяй. Может с чем-то конфликтует
Ответ написан
Комментировать
@PetrTar Автор вопроса
Метод changeCell делал div с ref=build.id+k - видимым, а вложенный в нем элемент в фокусе, по клику на другой td фокус пропадал и делал div с ref=build.id+k - disaplay: none, после этого событие @click на ячейки не срабатывало. Когда я перенес скрытие div с ref=build.id+k в метод changeCell - все заработало.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы