javascript - 检测 Vuetify 电台重选?
问题描述
我正在开发一个向导,其中选择单选按钮也会触发导航。也可以返回以更改以前的选择。然后我遇到的问题是,似乎没有一种好方法可以检测 Vuetify 中单选按钮的重新选择。
@change
仅在更改时触发- 没有
@click
或@input
事件 - 听
@mouseup
会取消@change
理想情况下,我要做的是:
<template>
<v-container>
<div v-if="step === 0">
<h1>Wizard: step 1</h1>
<v-radio-group
v-model="fruit"
label="Pick your fruit"
@input="step++"
>
<v-radio
value="apple"
label="Apple"
/>
<v-radio
value="orange"
label="Orange"
/>
</v-radio-group>
</div>
<div v-else-if="step === 1">
<h1>Wizard: step 2</h1>
<p>Prev choice: {{fruit }}</p>
<v-btn @click="step--">Go back</v-btn>
</div>
</v-container>
</template>
<script>
export default {
data: () => ({
step: 0,
fruit: "apple"
})
}
</script>
代码笔: https ://codepen.io/peteruithoven/pen/qBbGPL
我想出的一种解决方法是向包装 div 添加点击,然后忽略对 div 本身的点击。
<template>
<v-container>
<div v-if="step === 0">
<h1>Wizard: step 1</h1>
<v-radio-group
v-model="fruit"
label="Pick your fruit"
>
<div @click="onClick" ref="clickDetector">
<v-radio
value="apple"
label="Apple"
/>
<v-radio
value="orange"
label="Orange"
/>
</div>
</v-radio-group>
</div>
<div v-else-if="step === 1">
<h1>Wizard: step 2</h1>
<p>Prev choice: {{fruit }}</p>
<v-btn @click="step--">Go back</v-btn>
</div>
</v-container>
</template>
<script>
export default {
data: () => ({
step: 0,
fruit: "apple"
}),
methods: {
onClick(event) {
if(event.target !== this.$refs.clickDetector) {
this.step++;
}
}
}
}
</script>
带有解决方法的 Codepen:https ://codepen.io/peteruithoven/pen/KKVLGdR
有一个更好的方法吗?
解决方案
您应该能够定位原生点击事件,例如:
<v-radio
value="apple"
label="Apple"
@click.native="onSelection('apple')"
/>
如果可以的话,我也会考虑只使用一个按钮,因为这是大多数用户所期望的。
推荐阅读
- angular - 我如何合并(通用)spring boot 和 angular 的验证标准?
- javascript - Postman:使用 SHA256 和 RSA 的自定义签名请求
- c++ - 重写的比较运算符和表达式模板
- python - 尝试在 Heroku 服务器上的 Django 应用程序中迁移命令时出现问题
- java - 应返回空数组和集合而不是 null (java:S1168)
- java - 这是在java中比较字符串的正确方法吗?
- php - 如何在php中创建动态方法函数?
- algorithm - 哈希表双重哈希
- php - 如何在 Prestashop 中根据国家/地区重定向子域?
- html - 在 CSS/HTML 中更改切换开关的位置