前端开发中遇到的小bug--解决方案

news/2025/3/20 21:39:29/

1.在 searchBox 搜索栏中,用到了多级下拉框的筛选条件,样式如下:

 这样看起来是没什么问题的,但当我选择时,在框中显示的内容和筛选条件的内容就出错了:

这里其实是选择了 采矿业 -- 石油和天然气开采业 ,但显示框中是 林业,筛选条件的内容也有问题:

这里没有显示最后一级的 选项,即  石油和天然气开采业

问题就在这里,value 值的设置: 

修改的mock数据如下,这样就可以正常显示了:

内容效果: 

 

这里贴一部分代码: 

industryTypeList: [{ value: 101, label: '农、林、牧、渔业',children: [{ value: 10101, label: '农业' },{ value: 10102, label: '林业' },{ value: 10103, label: '畜牧业' },{ value: 10104, label: '渔业' },{ value: 10105, label: '农、林、牧、渔服务业' }]},{ value: 102, label: '采矿业',children: [{ value: 10201, label: '煤炭开采和洗选业' },{ value: 10202, label: '石油和天然气开采业' },{ value: 10203, label: '黑色金属矿采选业' },{ value: 10204, label: '有色金属矿采选业' },{ value: 10205, label: '非金属矿采选业' },{ value: 10206, label: '开采辅助活动' },{ value: 10207, label: '其他采矿业' }]},{ value: 103, label: '制造业',children: [{ value: 10301, label: '农副食品加工业' },{ value: 10302, label: '食品制造业' },{ value: 10303, label: '酒、饮料和精制茶制造业' },{ value: 10304, label: '烟草制品业' },{ value: 10305, label: '纺织业' },{ value: 10306, label: '纺织服装、服饰业' },{ value: 10307, label: '皮革、毛皮、羽毛及其制品和制鞋业' },{ value: 10308, label: '木材加工和木、竹、藤、棕、草制品业' },{ value: 10309, label: '家具制造业' },{ value: 10310, label: '造纸和纸制品业' },{ value: 10311, label: '印刷和记录媒介复制业' },{ value: 10312, label: '文教、工美、体育和娱乐用品制造业' },{ value: 10313, label: '石油加工、炼焦和核燃料加工业' },{ value: 10314, label: '化学原料和化学制品制造业' },{ value: 10315, label: '医药制造业' },{ value: 10316, label: '化学纤维制造业' },{ value: 10317, label: '橡胶和塑料制品业' },{ value: 10318, label: '非金属矿物制品业' },{ value: 10319, label: '黑色金属冶炼和压延加工业' },{ value: 10320, label: '有色金属冶炼和压延加工业' },{ value: 10321, label: '金属制品业' },{ value: 10322, label: '通用设备制造业' },{ value: 10323, label: '专用设备制造业' },{ value: 10324, label: '汽车制造业' },{ value: 10325, label: '铁路、船舶、航空航天和其他运输设备制造业' },{ value: 10326, label: '电气机械和器材制造业' },{ value: 10327, label: '计算机、通信和其他电子设备制造业' },{ value: 10328, label: '仪器仪表制造业' },{ value: 10329, label: '其他制造业' },{ value: 10330, label: '废弃资源综合利用业' },{ value: 10331, label: '金属制品、机械和设备修理业' }]},{ value: 104, label: '电力、热力、燃气及水生产和供应业' },{ value: 105, label: '建筑业' },{ value: 106, label: '批发和零售业' },{ value: 107, label: '交通运输、仓储和邮政业' },{ value: 108, label: '住宿和餐饮业' },{ value: 109, label: '信息传输、软件和信息技术服务业' },{ value: 110, label: '金融业' },{ value: 111, label: '房地产业' },{ value: 112, label: '租赁和商务服务业' },{ value: 113, label: '科学研究和技术服务业' },{ value: 114, label: '水利、环境和公共设施管理业' },{ value: 115, label: '居民服务、修理和其他服务业' },{ value: 116, label: '教育' },{ value: 117, label: '卫生和社会工作' },{ value: 118, label: '文化、体育和娱乐业' },{ value: 119, label: '公共管理、社会保障和社会组织' },{ value: 120, label: '国际组织' },{ value: 121, label: '其他' }
]

 2.在制作表单页面时,用到了 单选按钮,需要设置 trigger 属性,先看看效果:

选择性别,并且是必选项,现在的代码是,因为调用 elementui组件库时,默认是绑定了 radio 值,但就在这个地方出现了问题:

trigger 属性在这里设置为 blur 或 change 均可,选择之后,不会提示未选择选项的错误信息,但点击提交表单时,会出现错误提示框,效果是这样:

选择了“女”,依然提示“请选择性别”,解决如下:

扔掉 radio 项,设置为当前绑定的数据项:s012,即可解决

<el-col :span="12"><el-form-item label="性别" prop="s012" ref="radioGroup"><el-radio v-model="formData.s012" label="1">男</el-radio><el-radio v-model="formData.s012" label="2">女</el-radio></el-form-item>
</el-col>
s012: [{required: true,message: '请选择性别',trigger: 'change'
}]

3.在做 el-table 组件时,每列数据的宽度不同,并且用户使用的电脑屏幕大小不同,为了兼容并且提高用户体验,可以设置 mid-width 属性以及 show-overflow-tooltip(默认一行展示,超过显示省略号)。如果希望用户能够查看完整的内容,可以添加一个 ToolTip 组件在鼠标 hover 该单元格时浮现出来以显示全部内容。

<el-table-column prop="s003" :label="columnControl[2].label" mid-width="120" show-overflow-tooltip><template slot-scope="scope">{{ scope.row.s003 }}</template>
</el-table-column>

4.组件间通讯,这里是我用到的父子组件间的通讯

在父子组件通信方面,可以采用以下几种常用的方法:

  1. Props 传递:父组件通过 props 将数据传递给子组件。子组件通过 props 接收并使用这些数据。父组件可以在需要的时候更新传递给子组件的 props 数据,从而实现通信和数据更新。

  2. 自定义事件:父组件可以通过自定义事件的方式向子组件发送消息或触发特定操作。子组件可以监听这些事件,并在事件被触发时执行相应的操作。

  3. 使用 ref:父组件可以通过 ref 引用子组件的实例,从而直接访问子组件的属性和方法。这样可以实现父组件调用子组件的特定方法,或读取子组件的状态。

  4. 使用 Vuex(Vue.js 的状态管理库):如果你在 Vue.js 中使用 Vuex,则可以在父组件和子组件之间共享全局状态。父组件可以使用 Vuex 存储和更新数据,子组件可以通过读取 Vuex 中的状态来获取最新的数据。

我个人认为较为简单是在父组件中定义要传的值,然后用props在子组件中组件,之后通过 this.$emit('xxxx', yyyy) 的方式,下面是代码示范:

这是我在父组件中用到的子组件 ShowApply,这里记得使用前引用文件

<ShowApply :visible.sync="showApplyDialogShow" />

这里的 :visible.sync 就是我要传的值,用来控制子组件是否显示

props: {visible: Boolean
}

在子组件中利用 props 进行注册,然后在你绑定的点击事件或其他自定义事件的方法中使用如下代码中的 this.$emit('update:visible', false) :【里面具体要绑定的事件可以自行修改】,这是父向子传数据

methods: {// 提交申请onSubmit() {console.log('点击提交申请')this.dialogShow = true// 触发关闭事件,更新 visible 状态this.$emit('update:visible', false)}
}

再举一例,这里利用自定义事件或者 ref 都可以:

我要实现的需求是 我在子组件中上传一些文件,形成一个文件列表,在父组件中可以渲染出来

即将红色框中的列表渲染到触发这个子组件的父组件中,即这样的效果:

 在父组件中渲染子组件时,绑定ref 或者 自定义事件

<UploadDocument ref="uploadNew" @file-uploaded="handleFileUploaded" />

在子组件中使用 ref 或者 自定义事件,将我的文件列表渲染过去给父组件,这是子向父传数据

// 传递数据
toEmitFile() {// 将附件列表传递给父组件this.$emit('file-uploaded', this.attachmentList)this.attachmentList = []
}

http://www.ppmy.cn/news/486622.html

相关文章

AI大模型迈入应用时代,每日互动推动“可控大模型”落地

垂直行业更需要可控大模型 当下&#xff0c;大模型正在不断精进&#xff0c;以GPT-4、文心一言为代表的大模型&#xff08;LLM&#xff09;表现出了强大的逻辑推理能力&#xff0c;并能够很好地处理复杂任务&#xff0c;使得社会生产力得到了飞跃式提升。 面对大模型热度的持…

获取打印机状态,脱机或者在线

# 返回获取所有打印机名称信息 import win32print print_names [] printers win32print.EnumPrinters(2) for printer in printers:print_names.append(printer[2])def get_printer_status(device_nameNone):# 获取打印机状态 device_name打印机名称try:handle win32print.O…

AutoCAD语言包下载地址

​​​y​​​​​​​​​​​​​​AutoCAD 语言包 | AutoCAD 2021 | Autodesk Knowledge Network安装 AutoCAD 后&#xff0c;下载并安装 AutoCAD 语言包以采用您的首选语言运行 AutoCAD。 注意&#xff1a;自 2023 版起&#xff0c;直接从 Autodesk Account 下载语言包。 A…

解析完CAD安装包后,如何添加语言?手把手教你~

2021年&#xff0c;AutoCAD新增了中文支持&#xff0c;这对于外语不好的小伙伴可谓是久旱逢甘霖。由于语音包需要手动安装&#xff0c;很多小伙伴在解析完CAD安装包后对此是束手无策。今天就教你如何下载适用自己的语言产品并管理语言包。 1、下载其他语言版本的软件 登录到您…

CAD2020软件安装教程【搬运】

软件下载 [名称]&#xff1a;CAD2020 [大小]&#xff1a;1.97GB [语言]&#xff1a;简体中文 [安装环境]&#xff1a;Windows [64位下载链接]&#xff1a; https://pan.baidu.com/s/1To_R3UtsNmPZlYvzsmdnnQ [提取码]&#xff1a;kzn9 [备用链接]&#xff1a;在公众号…

cad2021安装教程附安装包下载-详细完整教程

下面给大家介绍的是cad2021安装教程及破解方法&#xff0c;具体操作步骤如下&#xff1a; 下载地址链接&#xff1a;https://pan.baidu.com/s/1z8IGpyIdrWyR5YZAQS3m6A?pwdavuo 提取码&#xff1a;avuo 1、打开下载好的CAD2021安装包进行解压&#xff0c;右击【CAD2021应用…

Python Anaconda创建虚拟环境及Pycharm使用虚拟环境

目录 前言 一、Anaconda与Pycharm 二、conda常用命令 三、Pycharm使用虚拟环境 总结 前言 我们在做开发任务时可能会创建多个项目&#xff0c;这些项目可能会依赖于不同的Python环境。比如有的用到Python3.6、有的用到Python3.7&#xff1b;有的用Pytorch开发、有的用Tens…

美依礼芽破圈!小红书数据解读,如何拨动二次元心弦?

今年&#xff0c;二次元存在感爆棚。新世代下二次元群体愈发壮大&#xff0c;不少博主发布二次元内容、品牌也试图融入二次元圈。那么&#xff0c;如何与之打成一片呢&#xff1f;今天&#xff0c;通过小红书数据&#xff0c;我们来解读二次元的内容方向。 点赞破8亿&#xff0…