优化 cl-cascader 选择效果
This commit is contained in:
@@ -34,6 +34,7 @@
|
||||
v-if="isMp() ? popupRef?.isOpen : true"
|
||||
class="h-full bg-transparent"
|
||||
:current="current"
|
||||
:disable-touch="disableTouch"
|
||||
@change="onSwiperChange"
|
||||
>
|
||||
<swiper-item
|
||||
@@ -403,6 +404,11 @@ function clear() {
|
||||
emit("change", value.value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否禁用触摸
|
||||
*/
|
||||
const disableTouch = ref(false);
|
||||
|
||||
/**
|
||||
* 处理选项点击事件
|
||||
* 根据点击的选项更新选中状态,如果是叶子节点则完成选择并关闭弹窗
|
||||
@@ -410,6 +416,18 @@ function clear() {
|
||||
* @param item 被点击的选项数据
|
||||
*/
|
||||
function onItemTap(item: ClListViewItem) {
|
||||
if (disableTouch.value == true) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 处理选项点击事件的主逻辑,防止重复点击,确保级联选择流程正确
|
||||
disableTouch.value = true;
|
||||
|
||||
// 设置新的定时器
|
||||
setTimeout(() => {
|
||||
disableTouch.value = false;
|
||||
}, 300);
|
||||
|
||||
// 如果选项没有值,直接返回
|
||||
if (item[props.valueKey] == null) {
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user