vant中radio单选框组件实现可以不选的功能

基本思路就是:设置一个变量,记录选择前的绑定值,然后在click事件中判断与当前的绑定值是否相同。相同就清空标识符,并将变量设为空。不同就将当前绑定值赋值给变量。

这里我使用的是Vant框架的Vue3.0版本,选择搭配Cell组件使用Radio单选框。


Html代码

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8" />

<title></title>

<meta charset="utf-8" />

<!-- 移动设备 viewport -->

<meta name="viewport"

content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no,minimal-ui">

<!-- 引入Vue3.0 -->

<script src="https://unpkg.com/vue@next"></script>

<!-- 引入样式 -->

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/vant@next/lib/index.css" />

<!-- 引入组件库 -->

<script src="https://cdn.jsdelivr.net/npm/vant@next/lib/vant.min.js"></script>

</head>

<body>

<div id="app">

<van-radio-group v-model="radio.checkedValue">

<van-cell-group inset>

<van-cell title="单选框 1" clickable @click="handleRadioClick('1')">

<template #right-icon>

<van-radio name="1"></van-radio>

</template>

</van-cell>

<van-cell title="单选框 2" clickable @click="handleRadioClick('2')">

<template #right-icon>

<van-radio name="2"></van-radio>

</template>

</van-cell>

</van-cell-group>

</van-radio-group>

</div>

</body>

</html>


JavaScript代码

const app = Vue.createApp({

data() {

return {

radio: {

//当前选中的值 (null:没有选中时的值)

checkedValue: null,

//之前选中的值 (null:没有选中时的值)

prevValue: null,

}

}

},

methods: {

handleRadioClick(value) {

if (value != this.radio.prevValue) {

/* 选中前的值与当前选中的值不相同 */

this.radio.prevValue = value;

//搭配Cell组件时,这里需要自己设置当前选中的值

this.radio.checkedValue = value;

} else {

/* 选中前的值与当前选中的值相同 */

this.radio.checkedValue = null;

this.radio.prevValue = null;

}

}

}

});

app.use(vant);

const vm = app.mount("#app");


如有错误,欢迎指出,谢谢!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容