当前位置: 首页 > java >正文

vue2如何二次封装表单控件如input, select等

需求

项目需要做一个城市选择器,数据来源公司的后端,要求用级联选择,使用的el-cascader

思路

二次封装要尽可能保留原有的组件prop,用法尽量保持和el-cascader一致,所以采用透传的方式传递prop

<template><div class="container" ><el-cascader:options="areaOptions"style="width: 100%"clearableref="cascader":value="value"@input="handleChange"v-on="$listeners"v-bind="$attrs"/></div>
</template>
<script>
import { findListByParentId } from '@/api/area/area'
export default {name: 'regionCascader',props: {value: {type: Array,default: () => []},disabledFunc: {// 这里是判断选项是否禁用的方法type: Function,default: (opts, level) => {return false}}},data() {return {options: []}},computed: {areaOptions() {const setOptions = (opts, level) => {return opts.map(opt => {if (opt?.children?.length) {opt.children = setOptions(opt.children, level + 1)}const param = {...opt,value: opt.id,label: opt.areaName,disabled: this.disabledFunc(opt, level)}return param})}return setOptions(this.options, 0)}},mounted() {this.getList()},methods: {handleChange(e) {this.$emit('input', e)},getList() {// 这里放获取数据的逻辑},getCheckedNodes() {return this.$refs.cascader.getCheckedNodes()}}
}
</script>
<style scoped>
.container{width: 100%;
}
</style>

后话

在VUE2中 2.6版本以后可以改为如下,去掉划线代码
在这里插入图片描述
在2.6版本以前,$attrs是不会获取到value字段,所以导致透传不进去,必须显示声明props.value

http://www.xdnf.cn/news/1620.html

相关文章:

  • Excel处理控件Aspose.Cells教程:使用 Python 在 Excel 中进行数据验
  • Diffusion inversion后的latent code与标准的高斯随机噪音不一样
  • 手机访问电脑端Nginx服务器配置方式
  • 新规!专利优先审查,每个申请主体每月推荐不超过2件。
  • 配置 C/C++ 语言智能感知(IntelliSense)的 c_cpp_properties.json 文件内容
  • 【k8s】KubeProxy 的三种工作模式——Userspace、iptables 、 IPVS
  • Maxscale实现Mysql的读写分离
  • 第七届能源系统与电气电力国际学术会议(ICESEP 2025)
  • 力扣热题100题解(c++)—矩阵
  • 碰一碰发视频源码文案功能,支持OEM
  • 扩散模型(Diffusion Model)详解:原理、发展与应用
  • VS Code扩张安装目录
  • CSS element-ui Icon Unicode 编码引用
  • websocket
  • 什么是 YAML:技术特性、应用场景与实践指南
  • 深入探索Spark-Streaming:从Kafka数据源创建DStream
  • CPT204 Advanced Obejct-Oriented Programming 高级面向对象编程 Pt.8 排序算法
  • 算法设计与分析(基础)
  • JetBrains GoLang IDE无限重置试用期,适用最新2025版
  • CentOS系统中MySQL安装步骤分享
  • 计算机图形学实践:结合Qt和OpenGL实现绘制彩色三角形
  • 硬件知识点-----SPI串联电阻、振铃、过冲
  • python的mtcnn检测图片中的人脸并标框
  • 精选面试题
  • 观成科技:摩诃草组织Spyder下载器流量特征分析
  • [原创](现代Delphi 12指南):[macOS 64bit App开发]:如何使用NSString类型字符串?
  • [Mac] 使用homebrew安装miniconda
  • 机器学习中的特征存储是什么?我需要一个吗?
  • 游戏引擎学习第241天:将OpenGL VSync 和 sRGB 扩展
  • nerf 有哪些 高精度建图算法