<input type='radio'> и при нажатии - я должен проверять: если уже checked, тогда нужно делать inp.checked = false.
Сделал так:
<p v-for="choice in poll.choices">
<label>
<input type="radio"
@click.prevent="changeVoteHandler"
/> [[ choice.value ]]
</label>
</p>
А в vue:
Vue.createApp({
delimiters: ['[[', ']]'],
data: ()=>(data),
methods: {
changeVoteHandler(ev){
setTimeout(()=>console.log(ev.target.checked), 0)
console.log(ev.target.checked)
}
}
}).mount('#polling_app')
Вопрос вот в чем:
Почему первый console.log возвращает верное значение, а второй всегда true?
Про ивентлуп и очереди я знаю, но не могу понять, почему сначала он на миг все же оказывается в значении true?
Почему бы не использовать v-model?
Пока не доконца понял, как он работает...
И что-то не понял, как ее здесь использовать. Получается она на каждом input висеть должен? Пока вижу, что для каждого инпута переменная должна быть, но это же не оч адекватно, как по мне... Это же не чекбоксы
Для радио раскладывается на checked и @change
Но @change не срабатывает при клике по уже активному пункту, потому было бы не плохо ловить mousedown, но ни eventListenner ни vue не ловит его, я посидел, подумал и по быстрому велосипед собрал.
Вы хотите убирать отмеченное значение по клику?
Да. Если коротко, то меня интересует правильный путь, т.к. мой вариант выглядит странно.
А корректно ли тогда использовать радио кнопки в таком случае?
Тоже думал об этом, но и чекбоксы тоже не подходят, если так подумать... Это по сути обычные радиокнопки, но чек снимается не по внешней кнопке, а по уже активной радиокнопке. Но я не сильно уверен в этом решении)
Какую задачу решаете?
Это голосование. Выбирается только один вариант ответа. Должна быть возможность убрать свой голос.
Обсуждают сегодня