首页 > 其他分享 >封装el-select

封装el-select

时间:2023-10-10 18:00:11浏览次数:24  
标签:el 封装 update props const modelValue select

效果:给select组件传入option请求方法,父组件无需再进行其他操作

 

<template>
  <el-select v-model="selectValue" multiple clearable @change="emitChange" value-key="id" placeholder="请选择车辆">
    <el-option v-for="item in options" :key="item.id" :label="item.name" :value="item.id" />
  </el-select>
</template>

<script lang="ts" setup>
import { ref, onMounted } from "vue";
const emit = defineEmits(["update:modelValue"]);

//接收父组件v-model传递过来的值
const props = defineProps({
  modelValue: {
    type: [String]
  },
  api: {
    type: Function,
    required: true
  }
});

//el-select的v-model不能绑定prop属性,所以定义本地变量一个
const selectValue = ref<string[]>([]);

//引入修改方法update:modelValue
const emitChange = () => {
  //change事件中需要将这个值传递给更新方法,即update:modelValue
  emit("update:modelValue", selectValue.value.join(","));
};

//定义数据源,并从服务器获取数据
const options = ref([]);
onMounted(async () => {
  let res = await props.api({});
  console.log(res.data);
  const newData = res.data.map(item => ({
    ...item,
    id: item.id.toString()
  }));

  options.value = newData;
  selectValue.value = props.modelValue ? props.modelValue.split(",") : [];
});
</script>

 

使用:

 <MySelect v-model="drawerProps.row!.model" :api="getTableInfoList"></MySelect>

 

总结: 得不偿失!!!

 

标签:el,封装,update,props,const,modelValue,select
From: https://www.cnblogs.com/easyidea/p/17755365.html

相关文章

  • Selenium借助AutoIt完成文件的上传与下载
    文件上传1,编辑首先提前下载好AutoIT,先了解https://blog.csdn.net/weixin_39218743/article/details/87808776手上没有带上传文件的网址,先用百度的上传照片吧!打开AutoIT工具组件中的脚本编辑器sciTEScriptEditorWinWaitActive("打开")Send('D:\img\11.jpg')Sleep(2000)Send("{......
  • kubelet证书手动续签
    查看证书是否过期opensslx509-in/var/lib/kubelet/pki/kubelet.crt-noout-dates模拟证书过期#dateThuNov700:05:17CST2021#date-s"2022-10-07"FriNov700:00:00CST2022#dateFriNov700:00:02CST2022备份旧证书cp/var/lib/kubelet/pki/kube......
  • 总结selenium 中 js 更改隐藏属性
    第一种多个元素被隐藏时通过js修改对比照片这个是没隐藏的 对比照片 这个是隐藏的 driver=webdriver.Chrome()#urlurl=r"http://127.0.0.1:5000/"driver.get(url)print("已打开网页")#执行js脚本,将元素的display属性设置为block,......
  • [arc135f] Delete 1, 4, 7, ...
    F-Delete1,4,7,...设\(f(i)\)表示第一次操作后,第\(i\)个位置的数,那么\(f(i)=\lfloor\frac{3i+1}2\rfloor\)那么\(k\)次操作后,第\(i\)个位置上的数就是:\[f(f(...f(f(i))...))=f^k(i)\]设\(cnt_k\)表示\(k\)次操作后剩下的数的个数,那么显然有:\(cnt_i=\lfloor\frac{cnt_......
  • 记一个Elmessage被遮挡问题
    之前在开发一个管理页面,功能有,编辑时只有一行可以编辑,删除时弹出警告窗口,确认后才执行删除。​代码为Element-plus中的示例。但是ElMessageBox一直被遮挡代码如下,均为Element-plus的示例,此外还有两层router-view嵌套:<template><el-table:data="projectTableData"sty......
  • winform -Label控件
    1、设置标签文本   label1.Text="用一生下载你";2、显示/隐藏控件label1.Visible=true;   //来设置是否隐藏控件 ......
  • System.NotSupportedException:“无法显式设置 SplitterPanel 的高度。改在 SplitCont
    System.NotSupportedException:“无法显式设置SplitterPanel的高度。改在SplitContainer上设置SplitterDistance。”这个错误信息是在使用SplitContainer控件时出现的。它表明您尝试显式设置SplitterPanel的高度,但这是不支持的操作,应该在SplitContainer上设置Splitte......
  • 固定panel1,panel2适应窗体变化
    固定panel1,panel2适应窗体变化如果您想要固定Panel1并且让Panel2适应窗体大小的变化,可以使用以下方式设置SplitContainer的属性: '设置SplitContainer的FixedPanel属性为Panel1,以固定Panel1的大小SplitContainer1.FixedPanel=FixedPanel.Panel1'设置Doc......
  • django 设置外键的时候,related_name的值大写还是小写,规则怎样
    django设置外键的时候,related_name的值大写还是小写,规则怎样在Django中,related_name参数用于定义反向关系的名称,即通过外键字段反向查询关联模型的对象。related_name的值是一个字符串,可以是大写也可以是小写,但通常建议使用小写字母,因为它们更符合Python的命名约定(PEP8)。具体......
  • shell批量检测主机是否存活
    shell批量检测主机是否存活青菜浪人 青菜浪人 2023-08-2816:40 发表于陕西收录于合集#Linux45个    这段脚本的作用是循环读取/root/ip.txt文件中的IP地址,并使用ping命令检测这些IP地址是否能够连通。对每个IP地址发送3个ICMP包,并将结果输出到/dev/null中。如果pin......