Vuetify 复选框:如何停止点击事件?
Vuetify checkbox: how to stop the click event?
我尝试有一个带有 @click.stop.prevent="myEvent"
的复选框,在将复选框设置为 true 之前应该询问,但是停止和阻止被忽略并且复选框仍然被激活。这里可能有什么问题?
这是一个 fiddle 问题描述:https://jsfiddle.net/ag63f9fm/49/
<v-checkbox @click.native.stop.prevent='ask($event)' :label="`Checkbox 1: ${checkbox1.toString()}`" v-model="checkbox1"></v-checkbox>
询问方法:
ask: function (event) {
answer = confirm('really')
console.log('Answer: ' + answer)
if (!answer) {
event.stopPropagation()
event.preventDefault()
}
return answer
}
好的,在 vuetify 上发布问题后,我被告知要改用 click.capture
,但我仍然不知道为什么简单的 event.stopPropagation()
不起作用第一名.
我也遇到了同样的问题,但与 v-radio-group 有关。阅读 v-checkbox 的解决方案,我是这样解决的:
<v-radio-group v-model="dateFlow" hide-details>
<v-radio
label="Not booked yet"
value="NOTBOOKED"
@click.capture.stop="openConfirmDialog('NOTBOOKED')"
></v-radio>
<v-radio
label="Already booked"
value="BOOKED"
@click.capture.stop="openConfirmDialog('BOOKED')"
></v-radio>
</v-radio-group>
dateFlow 属性 是计算的 属性 定义如下
computed: {
dateFlow: {
get() {
return this.$store.getters["myStore/getDateFlow"];
},
set() {
}
}
}
selectedDateFlow 是 属性 直接定义在 data:
data() {
return {
selectedDateFlow: null
};
}
openConfirmDialog 方法定义如下:
openConfirmDialog(val) {
// val contains the selected radio value
this.selectedDateFlow = val;
this.warningDialog = true;
}
然后我打开一个警告对话框,如果用户按下取消按钮,我会重置 selectedDateFlow 属性
closeWarningDialog() {
this.selectedDateFlow = null;
this.warningDialog = false;
},
否则我使用 selectedDateFlow 属性 更新我商店中的 dateFlow 属性:
proceedAfterWarning() {
// set the new value
this.$store.commit("myStore/setDateFlow", this.selectedDateFlow);
this.warningDialog = false;
},
希望对大家有所帮助:)
此代码工作正常:
<v-switch :input-value="checked" @click.native.capture="changeStatus($event)"></v-switch>
methods: {
changeStatus(event) {
event.stopPropagation()
}
}
我尝试有一个带有 @click.stop.prevent="myEvent"
的复选框,在将复选框设置为 true 之前应该询问,但是停止和阻止被忽略并且复选框仍然被激活。这里可能有什么问题?
这是一个 fiddle 问题描述:https://jsfiddle.net/ag63f9fm/49/
<v-checkbox @click.native.stop.prevent='ask($event)' :label="`Checkbox 1: ${checkbox1.toString()}`" v-model="checkbox1"></v-checkbox>
询问方法:
ask: function (event) {
answer = confirm('really')
console.log('Answer: ' + answer)
if (!answer) {
event.stopPropagation()
event.preventDefault()
}
return answer
}
好的,在 vuetify 上发布问题后,我被告知要改用 click.capture
,但我仍然不知道为什么简单的 event.stopPropagation()
不起作用第一名.
我也遇到了同样的问题,但与 v-radio-group 有关。阅读 v-checkbox 的解决方案,我是这样解决的:
<v-radio-group v-model="dateFlow" hide-details>
<v-radio
label="Not booked yet"
value="NOTBOOKED"
@click.capture.stop="openConfirmDialog('NOTBOOKED')"
></v-radio>
<v-radio
label="Already booked"
value="BOOKED"
@click.capture.stop="openConfirmDialog('BOOKED')"
></v-radio>
</v-radio-group>
dateFlow 属性 是计算的 属性 定义如下
computed: {
dateFlow: {
get() {
return this.$store.getters["myStore/getDateFlow"];
},
set() {
}
}
}
selectedDateFlow 是 属性 直接定义在 data:
data() {
return {
selectedDateFlow: null
};
}
openConfirmDialog 方法定义如下:
openConfirmDialog(val) {
// val contains the selected radio value
this.selectedDateFlow = val;
this.warningDialog = true;
}
然后我打开一个警告对话框,如果用户按下取消按钮,我会重置 selectedDateFlow 属性
closeWarningDialog() {
this.selectedDateFlow = null;
this.warningDialog = false;
},
否则我使用 selectedDateFlow 属性 更新我商店中的 dateFlow 属性:
proceedAfterWarning() {
// set the new value
this.$store.commit("myStore/setDateFlow", this.selectedDateFlow);
this.warningDialog = false;
},
希望对大家有所帮助:)
此代码工作正常:
<v-switch :input-value="checked" @click.native.capture="changeStatus($event)"></v-switch>
methods: {
changeStatus(event) {
event.stopPropagation()
}
}