电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

vue 中使用 vxe-table 制作可編輯表格的使用過程

瀏覽:4日期:2023-12-12 15:11:13

項目上有一個表格需要實現在線編輯,開始用了 element 的el-table 實現,單元格內基礎情況就是監聽了單擊單元格切換一個span標簽與input標簽,復雜點的單元格使用了大量的條件判斷來實現對應的編輯操作,比如下拉選,popover彈框編輯。整個表格幾十列,十幾條數據就已經出現了明顯的卡頓,在做了諸多操作(比如el-input使用原生input替換、減少判斷、減少頻繁的數據切換等)之后,速度雖然有所提升,但是還是肉眼可見的卡頓,基本不可用。然后便轉戰vxe-table,重寫了一遍這個表格。 (別問我為什么不直接用更好的vxe-table,正經人寫代碼誰會首先想到重構而不是試試優化呢。。。)

下面記錄一下使用過程。

1. 全局安裝

npm install xe-utils@3 vxe-table@3

main.js 中引入

import ’xe-utils’;import VXETable from ’vxe-table’;import ’vxe-table/lib/style.css’;​Vue.use(VXETable);

其實它可以按需加載來減少項目體積,但是我覺得有點麻煩就沒弄,想要了解可以點擊下面鏈接查看~ vue-table 按需加載

2. 基礎用法

<template> <vxe-table : :data='tableData'><vxe-table-column type='seq' width='60'></vxe-table-column><vxe-table-column field='name'></vxe-table-column><vxe-table-column field='desc'></vxe-table-column><vxe-table-column field='link'></vxe-table-column> </vxe-table></template><script> export default {data () { return {allAlign: null,tableData: [ {name: 'html',desc: ’超文本標記語言’,link: ’https://www.runoob.com/html/html-tutorial.html’ }, {name: 'css',desc: ’層疊樣式表’,link: ’https://www.runoob.com/css/css-intro.html’ }, {name: 'js',desc: ’JavaScript’,link: ’https://www.runoob.com/js/js-tutorial.html’ }] }} }</script>

以上,即可實現一個基礎表格,但是現在僅僅是表格展示,實現編輯還需要另外的配置。

vue 中使用 vxe-table 制作可編輯表格的使用過程

3. 實現編輯

<template> <!--表格添加edit-config配置--> <vxe-table border :data='tableData' :edit-config='{trigger: ’click’, mode: ’cell’}'><!--對單元格vxe-table-column進行改造,使用edit-render來配置編輯屬性---><vxe-table-column fixed='left' field='desc' :edit-render='{name: ’input’, attrs: {type: ’text’}}'></vxe-table-column> </vxe-table></template>

vue 中使用 vxe-table 制作可編輯表格的使用過程

具體配置可以查看 api

3. 實現下拉選擇

<template> <vxe-table border :data='tableData' :edit-config='{trigger: ’click’, mode: ’cell’}'><!--和輸入框編輯區別僅在于edit-render的配置不同,data中新增選項selection---><vxe-table-column field='isShow' :edit-render='{name: ’select’, options: selection, optionProps: {value: ’status’, label: ’label’}}'></vxe-table-column> </vxe-table></template><script> export default {data () { return {allAlign: null,tableData: [ {name: 'html',desc: ’超文本標記語言’,link: ’https://www.runoob.com/html/html-tutorial.html’,isShow: 1 } // 省略一下多條數據········],selection: [ {status: 1, label: ’是’}, {status: 0, label: ’否’}] }} }</script>

vue 中使用 vxe-table 制作可編輯表格的使用過程

4. 自定義模板

vxe-table自定義模板是使用插槽實現的,可以使用<template #插槽名></template>實現,比如:

<vxe-table-column field='name' :edit-render='{name: ’input’, attrs: {type: ’text’}}'> <!--使用#header自定義表頭--> <template #header><span>名稱</span><span style='font-size: 12px; color: #ccc'>技術</span> </template> <!--使用#default自定義內容--> <template #default='{row}'><span>技術名稱</span><span>{{row.name}}</span> </template> <!--使用#edit自定義編輯--> <template #edit='{row}'><p>技術名稱</p><input type='text' v-model='row.name' class='vxe-default-input'> </template></vxe-table-column>

需要演示,所以把名稱列做成了可編輯列,使用#header、#default、#edit分別自定義了列頭、默認顯示內容、編輯顯示內容,如下圖:

vue 中使用 vxe-table 制作可編輯表格的使用過程

5. 實時保存功能

使用vxe-table的edit-closed方法監聽編輯框關閉,調用更新接口即可實現。

<template> <vxe-table border :data='tableData' :edit-config='{trigger: ’click’, mode: ’cell’}' @edit-closed='updateData'><vxe-table-column field='isShow' :edit-render='{name: ’select’, options: selection, optionProps: {value: ’status’, label: ’label’}}'></vxe-table-column> </vxe-table></template><script> export default {data () { // 省略掉···},methods: { updateData ({ row, column }) {// 后臺更新接口接受一條數據,所以傳row即可console.log(row); }} }</script>

其實官方方法還實現了檢查當前單元格內容是否更改,不過我們這里數據結構略復雜,源碼里的方法不太適用。 這里貼出來一下

editClosedEvent ({ row, column }) { const $table = this.$refs.xTable const field = column.property const cellValue = row[field] // 判斷單元格值是否被修改 if ($table.isUpdateByRow(row, field)) {setTimeout(() => { this.$XModal.message({content: `局部保存成功! ${field}=${cellValue}`,status: ’success’ }) // 局部更新單元格為已保存狀態 $table.reloadRow(row, null, field)}, 300) }}

以上即為實現可編輯表格的基本寫法,容我再研究一下如何檢測數據很深的情況下如何檢測數據是否發生改動。

總結一下,vxe-table的可編輯表格直接內置了可編輯的功能,配置即可用,避免了el-table的各種判斷切換,可以更優雅的實現編輯功能,另外它還支持虛擬滾動,在大量數據加載時可以有更好的性能。缺點就是在UI圖確定的情況下需要重寫表格樣式,挺費時間的。

建議各位如果遇到復雜表格的話,就不要自己想著優化性能了,直接使用vxe-table一步到位,后期徒增重構成本,血的教訓啊

到此這篇關于vue 中使用 vxe-table 制作可編輯表格的文章就介紹到這了,更多相關vue可編輯表格內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Vue
相關文章:
主站蜘蛛池模板: 空气能采暖,热泵烘干机,空气源热水机组|设备|厂家,东莞高温热泵_正旭新能源 | 雨燕360体育免费直播_雨燕360免费NBA直播_NBA篮球高清直播无插件-雨燕360体育直播 | ORP控制器_ORP电极价格-上优泰百科 | 新中天检测有限公司青岛分公司-山东|菏泽|济南|潍坊|泰安防雷检测验收 | 首页|专注深圳注册公司,代理记账报税,注册商标代理,工商变更,企业400电话等企业一站式服务-慧用心 | 塑料撕碎机_编织袋撕碎机_废纸撕碎机_生活垃圾撕碎机_废铁破碎机_河南鑫世昌机械制造有限公司 | 沈阳网站建设_沈阳网站制作_沈阳网页设计-做网站就找示剑新零售 沈阳缠绕膜价格_沈阳拉伸膜厂家_沈阳缠绕膜厂家直销 | 环讯传媒,永康网络公司,永康网站建设,永康小程序开发制作,永康网站制作,武义网页设计,金华地区网站SEO优化推广 - 永康市环讯电子商务有限公司 | 亳州网络公司 - 亳州网站制作 - 亳州网站建设 - 亳州易天科技 | 真空干燥烘箱_鼓风干燥箱 _高低温恒温恒湿试验箱_光照二氧化碳恒温培养箱-上海航佩仪器 | 进口试验机价格-进口生物材料试验机-西安卡夫曼测控技术有限公司 | 食安观察网| 防弹玻璃厂家_防爆炸玻璃_电磁屏蔽玻璃-四川大硅特玻科技有限公司 | 继电器模组-IO端子台-plc连接线-省配线模组厂家-世麦德 | 橡胶膜片,夹布膜片,橡胶隔膜密封,泵阀设备密封膜片-衡水汉丰橡塑科技公司网站 | 定量包装秤,吨袋包装称,伸缩溜管,全自动包装秤,码垛机器人,无锡市邦尧机械工程有限公司 | 润滑油加盟_润滑油厂家_润滑油品牌-深圳市沃丹润滑科技有限公司 琉璃瓦-琉璃瓦厂家-安徽盛阳新型建材科技有限公司 | 无味渗透剂,泡沫抑尘剂,烷基糖苷-威海威能化工有限公司 | 祝融环境-地源热泵多恒系统高新技术企业,舒适生活环境缔造者! | 高柔性拖链电缆-聚氨酯卷筒电缆-柔性屏蔽电缆厂家-玖泰电缆 | 【直乐】河北石家庄脊柱侧弯医院_治疗椎间盘突出哪家医院好_骨科脊柱外科专业医院_治疗抽动症/关节病骨伤权威医院|排行-直乐矫形中医医院 | 道达尔润滑油-食品级润滑油-道达尔导热油-合成导热油,深圳道达尔代理商合-深圳浩方正大官网 | 桁架楼承板-钢筋桁架楼承板-江苏众力达钢筋楼承板厂 | Duoguan 夺冠集团| 煤矿支护网片_矿用勾花菱形网_缝管式_管缝式锚杆-邯郸市永年区志涛工矿配件有限公司 | ICP备案查询_APP备案查询_小程序备案查询 - 备案巴巴 | 北京开源多邦科技发展有限公司官网 | 深圳市索富通实业有限公司-可燃气体报警器 | 可燃气体探测器 | 气体检测仪 | 钢衬玻璃厂家,钢衬玻璃管道 -山东东兴扬防腐设备有限公司 | 塑料熔指仪-塑料熔融指数仪-熔体流动速率试验机-广东宏拓仪器科技有限公司 | 99文库_实习生实用的范文资料文库站 | 【MBA备考网】-2024年工商管理硕士MBA院校/报考条件/培训/考试科目/提前面试/考试/学费-MBA备考网 | 华溶溶出仪-Memmert稳定箱-上海协烁仪器科技有限公司 | 石家庄救护车出租_重症转院_跨省跨境医疗转送_活动赛事医疗保障_康复出院_放弃治疗_腾康26年医疗护送转诊团队 | 木材烘干机,木炭烘干机,纸管/佛香烘干设备-河南蓝天机械制造有限公司 | 节流截止放空阀-不锈钢阀门-气动|电动截止阀-鸿华阀门有限公司 | 网带通过式抛丸机,,网带式打砂机,吊钩式,抛丸机,中山抛丸机生产厂家,江门抛丸机,佛山吊钩式,东莞抛丸机,中山市泰达自动化设备有限公司 | 网站建设-高端品牌网站设计制作一站式定制_杭州APP/微信小程序开发运营-鼎易科技 | 精密五金加工厂-CNC数控车床加工_冲压件|蜗杆|螺杆加工「新锦泰」 | 马尔表面粗糙度仪-MAHR-T500Hommel-Mitutoyo粗糙度仪-笃挚仪器 | 济南ISO9000认证咨询代理公司,ISO9001认证,CMA实验室认证,ISO/TS16949认证,服务体系认证,资产管理体系认证,SC食品生产许可证- 济南创远企业管理咨询有限公司 郑州电线电缆厂家-防火|低压|低烟无卤电缆-河南明星电缆 |