antdv Select dropdownRender Input 不能输入的问题

简言之:外层套div,然后利用Select的open属性。直接上代码:

<template>
	<a-form-item-rest>
	 <div @click="selOpen = !selOpen">
	   <Select
	     v-model:value="xxx"
	     placeholder="请选择"
	     :options="groupCodes"
	     :open="selOpen"
	     :field-names="{ label: 'groupName', value: 'groupCode' }"
	     @change="groupChange"
	   >
	     <template #dropdownRender="{ menuNode: menu }">
	       <div
	         @mouseleave="
	           selOpen = false;
	           newGroupName = '';
	         "
	       >
	         <v-nodes :vnodes="menu" />
	         <Divider style="margin: 4px 0" />
	         <div class="flex items-center justify-between px-4">
	           <a-input v-model:value="newGroupName" class="flex-1" placeholder="请输入" />
	           <div class="cursor-pointer px-8px py-4px" @click="addGroup">
	             <plus-outlined />
	             新增分组
	           </div>
	         </div>
	       </div>
	     </template>
	   </Select>
	 </div>
	</a-form-item-rest>
</template>

// 大概这么个引入的意思,具体看自身当前项目怎么个引入方式
<script lang="ts" setup>
import { Form, Select, Divider } from 'ant-design-vue';
import { PlusOutlined } from '@ant-design/icons-vue';

const AFormItemRest = Form.ItemRest:
const VNodes = (_, { attrs }) => {
  return attrs.vnodes;
}

const selOpen = ref(false);
const groupCodes: any = ref([]);
function groupChange(e, a) {
  setFieldsValue({
    groupCode: e,
    groupName: a.groupName,
  });
  selOpen.value = false;
}
const newGroupName = ref('');
async function addGroup() {
  if (!newGroupName.value) return;
  // await groupSave({ groupName: newGroupName.value } as any);
  // const groupList = await groupListApi();
  // groupCodes.value = groupList;
  selOpen.value = false;
  newGroupName.value = '';
}
</script>

小说明:外层 div click 事件触发select开启,然后 slot 内部 div 利用 mouseleave 属性,模拟出select 的失焦 blur 事件

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值