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

爆改vue3 setup naiveui可编辑table

使用naiveui官网的可编辑table总是报错,所以手写了一个

思路:table数据数组unitMsgArr对应一个布尔的数组isEditArr ,点击table可编辑的行数据的时候,更改对应的isEdit为true,此时渲染组件EditCom,在EditCom组件中编辑完成,触发父组件的方法更改数据,完成编辑

table页面代码,重点在columns的配置

<n-data-table :columns="columns":data="unitMsgArr":bordered="true"style="height:520px" /><script>//获取点击的行在数据数组unitMsgArr对应的index
const getDataIndex = (id: string) => {return unitMsgArr.value.findIndex((item) => item.id === id)
}//拿到前页面的unitMsgArr时,生成对应的是否边际数组 isEditArr   
const isEditArr = ()=>{unitMsgArr.value.forEach(()=>{//默认都不可以编辑return false})
}setup(){const createColumns = () => {return [{title: '姓名',key: 'name',width: 400},{title: '年龄',key: 'age',width: 400},{//可编辑列title: '编号',key: 'num',width: 300,render(row: unitType) {if (isEditArr.value[getDataIndex(row.id)] === false) {return h(NButton,{text: true,onClick: () => {isEditArr.value[getDataIndex(row.id)] =!isEditArr.value[getDataIndex(row.id)]}},{default: () => row.num})} else {return h(EditCom, {rowData: row,onLoseFouce: (data: any) => {changeNumFun(data)}})}}}}]}}
</script>

自己创建一个组件EditCom,在table可编辑的列中使用

EditCom代码

<template><div class="editBox"><n-space><n-input class="inputBox"placeholder="输入编号"v-model:value="inputNum"></n-input><n-button @click="submitNum">确定</n-button></n-space></div>
</template>
<script lang="ts">
import { ref, h,defineComponent } from 'vue'// LoseFouce 父组件方法export default defineComponent({name: 'editCom',props: {rowData: {type: Object,default: 0}},setup(props, context) {console.log(props.rowData.num)// 输入的数字const inputNum = ref(props.rowData.num)// 输入数字触发方法const changeNum = () => {console.log(inputNum.value)}// 点击确定触发方法const submitNum = () => {console.log('确定更改')context.emit('loseFouce', {indexNum: inputNum.value,id: props.rowData.id})// 将输入的数字传递到父组件}return {inputNum, //输入的数字changeNum, //改变数字submitNum //确定按钮}}
})
</script>
http://www.lryc.cn/news/105909.html

相关文章:

  • 功率放大器的种类有哪三种类型
  • HDFS 分布式存储 spark storm HBase
  • Vue3文字实现左右和上下滚动
  • Docker Sybase修改中文编码
  • 【SpringCloud Alibaba】(六)使用 Sentinel 实现服务限流与容错
  • mysql的主从复制
  • 【Golang 接口自动化03】 解析接口返回XML
  • Java+bcprov库实现对称和非对称加密算法
  • 国内最大Llama开源社区发布首个预训练中文版Llama2
  • Qt应用开发(基础篇)——滑块类 QSlider、QScrollBar、QDial
  • 【3-D深度学习:肺肿瘤分割】创建和训练 V-Net 神经网络,并从 3D 医学图像中对肺肿瘤进行语义分割研究(Matlab代码实现)
  • MongoDB文档--架构体系
  • GEE学习03-Geemap配置与安装,arcgis pro自带命令提示符位置等
  • 软件测试面试总结——http协议相关面试题
  • 大数据与okcc呼叫中心融合的几种方式
  • WAF绕过-工具特征-菜刀+冰蝎+哥斯拉
  • 使代码减半的5个Python装饰器
  • 线程池的线程回收问题
  • 盘点那些不想骑车的原因和借口。
  • 【深度学习Week3】ResNet+ResNeXt
  • Visual Studio 2022的MFC框架全面理解
  • C# 消息队列 (MSMQ) 进程之间的通信
  • 算法练习(4):牛客在线编程05 哈希
  • 数字信号处理——频谱分析
  • [软件工程] 架构映射战略设计方案模板
  • Springboot MongoDB 事务
  • SAP自建表日志
  • ansible-kubeadm在线安装单masterk8s v1.19-v1.20版本
  • mongodb docker 及常用命令
  • 最新版本mac版Idea 激活Jerbel实现热部署