当前位置: 首页 > 知识库问答 >
问题:

javascript - 点击某个自定义按钮,实现表格数据刷新?

越国源
2024-01-09
let PortData = reactive({  tableData: [], // 列表数据  lanPortId: '',// 网络端口输出id  NetworkCard: '',// 网卡--右上文字  IpAddress: '',// IP地址--右上文字  Port: ''// 端口--右上文字})onMounted(() => {  nextTick(() => {    GetSerID();  })})// 先进行 获取端口数据量的请求,查询到对应的id,然后再讲id传递给getInitialTableData函数通过id是实现显示对应接口数据async function GetSerID() {  const SerIDList = await api.GetSerialId();  const { data: res } = SerIDList;  const result = res.port_thruput.split(",").reduce((acc, curr, index, array) => {    if (index % 3 === 0) {      const [portId, rate, thruput] = array.slice(index, index + 3);      const formattedPortId = parseInt(portId).toString(16).padStart(2, '0');      if (formattedPortId >= '21' && formattedPortId <= '24') {//只显示0x21-0x24的数据        acc.push({          portId: formattedPortId,          rate,          thruput,        });      }    }    return acc;  }, []);  for (const item of result) {    // 将“端口数据量”接口获取到的id传递给GetPacketHeaderFreq函数,以便于获取报文头频率数据    await GetPacketHeaderFreq(item.portId)  }}// 获取报文头频率数据async function GetPacketHeaderFreq(id: any) {  const data = { port_id: parseInt(id, 16) }  const OutCfgList = await api.GetPortOut(data);  const { data: res } = OutCfgList;  const portId = res.port_id.toString(16).padStart(2, '0');  const formattedFrequency = Object.entries(res)    .filter(([key, value]) => key.endsWith('_freq') && value !== 0)    .map(([key, value]) => `${key.replace('_freq', '').toUpperCase()}/${value}`)    .join('; ');  // 如果报文/频率为空,则执行变为使能按钮,并且隐藏掉编辑框语句  if (formattedFrequency === '') {    buttonText.value = '使能'    iconVisible.value = false  } else {    buttonText.value = '禁止'    iconVisible.value = true  }  const forma = ''  if (portId >= '21' && portId <= '24') {//只显示0x21-0x24的数据    await getInitialTableData(id, formattedFrequency)// 调用获取表格数据函数,传入端口数据量的id和报文/频率参数  } else {    await getInitialTableData(id, forma)//未在此范围就不传递报文/频率参数  }}//获取列表中其他的数据(网络端口id,端口使能,类型,连接状态......)async function getInitialTableData(id: any, formattedFrequency: string) {  // 这里的id是端口数据量接口传递过来的(16进制的11转为10进制发送)  const data = { lan_port_id: parseInt(id, 16) }  const GetTableData = await api.GetLanPortCfg(data)  const { data: res } = GetTableData  //  判断是否需要添加到表格中     if (previousId.value.includes(res.lan_port_id)) {    return;  }  previousId.value.push(res.lan_port_id);  const portId = res.lan_port_id.toString(16).padStart(2, '0');  //根据返回的连接状态,再表格内是否显示“连接”还是“断开”按钮  if (res.state === false) {    ConnectState.value = true  } else {    ConnectState.value = false  }  // 如果portId返回的不在0x21和0x24 之间就不显示  if (portId >= '21' && portId <= '24') {    const tableData = [      {        lan_port_id: res.lan_port_id.toString(16).padStart(2, '0'),//16===>10  id        network_card: '有线',//网卡        en: res.en, //端口使能        type: res.type,//类型        dst_ip: res.dst_ip,//目标ip        port: res.port,//端口号        formattedFrequency: formattedFrequency, // 添加formattedFrequency属性        state: res.state//连接状态      }    ];    // console.log('lan口列表数据源', tableData);    PortData.tableData = [...PortData.tableData, ...tableData];  }}// 点击保存按钮,实现表格数据的更新async function save() {  const data = {    port_id: Number(sessionStorage.getItem('lanPortId')),    state: 1,    kcn_freq: Number(INS.input_kcn),    inspva_freq: Number(INS.input_inspva),    inspvax_freq: Number(INS.input_inspvax),    bestpos_freq: Number(INS.input_bestpos),    gga_freq: Number(GNSS.input_gga),    rmc_freq: Number(GNSS.input_rmc),    dop_freq: Number(GNSS.input_dop),    gsa_freq: Number(GNSS.input_gsa),    gsv_freq: Number(GNSS.input_gsv),    heading_freq: Number(GNSS.input_heading),    zda_freq: Number(GNSS.input_zda),    gst_freq: Number(GNSS.input_gst),    rawimu_freq: Number(RAW.input_rawimu),    imudataa_freq: Number(RAW.input_imudataa),    sta_freq: Number(OTHER.input_sta),    dev_freq: Number(OTHER.input_dev),  }  const SetData = await api.SetPortOut(data)  const { data: res } = SetData  if (res.error_code === 0) {    await GetSerID();//初始化列表    return ElMessage({ message: res.msg, type: 'success', showClose: true })  } else {    return ElMessage({ message: res.msg, type: 'error', showClose: true })  }}

图片.png
我根据上面代码,在点击保存按钮,save()内,调用GetSerID()函数来初始化列表来达到列表数据更新,但是没反应?麻烦各位大佬们帮忙看看,谢谢~

共有1个答案

金秦斩
2024-01-09

提几个问题

  1. 你在 save 之后再获取列表时并没有将原有的列表置空,而是直接往里面填数据,这样是否会造成数据重复
  2. PortData.tableData = [...PortData.tableData, ...tableData] 可以改成 PortData.tableData.push(...tableData)
 类似资料:
  • 本文向大家介绍Android 自定义Button控件实现按钮点击变色,包括了Android 自定义Button控件实现按钮点击变色的使用技巧和注意事项,需要的朋友参考一下 效果图如下所示: 一、shape 样式:(在drawable新建--》new--》Drawable resource file 在父级标签selector添加Item ) 二、style 样式: 三、Button控件调用styl

  • 本文向大家介绍layui实现数据表格自定义数据项,包括了layui实现数据表格自定义数据项的使用技巧和注意事项,需要的朋友参考一下 layui是一个很适合后台开发人员用的一个前端框架,界面简洁,功能丰富。 大家知道,系统一般都有数据表格及分页功能,尤其在后台管理系统之类,这类场景更是很多,layui也为我们提供了对应的支持,我这里要说的是,layui对异步返回的数据默认是有一套格式的,像下面这样

  • 本文向大家介绍Repeater中添加按钮实现点击按钮获取某一行数据的方法,包括了Repeater中添加按钮实现点击按钮获取某一行数据的方法的使用技巧和注意事项,需要的朋友参考一下 本文以一个asp.net程序为例讲述了Repeater中添加按钮实现点击按钮获取某一行数据的方法,分享给大家供大家参考借鉴之用。具体步骤如下: 1.添加编辑按钮和删除按钮 具体代码如下: 2.选中Repeater控件,添

  • 在我的应用程序中,我有一个通知要显示。 比方说,当显示通知时,我想按“是”进入活动并隐藏通知,按“否”什么都不做只是隐藏通知。 我尝试了这段代码,但是onclick不是onclckpendingent,我不能做任何我想做的事情。 我怎么能这样做?

  • 本文向大家介绍vue实现自定义多选按钮,包括了vue实现自定义多选按钮的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了vue实现自定义多选按钮的具体代码,供大家参考,具体内容如下 图示 返回的选中列表是一个数组 html部分 js部分  样式 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 本文向大家介绍python实现点击按钮修改数据的方法,包括了python实现点击按钮修改数据的方法的使用技巧和注意事项,需要的朋友参考一下 使用JSON获取前端数据,转成JSON,传递到后端,然后对数据库做修改。 前端代码 后端代码 以上这篇python实现点击按钮修改数据的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。