From 1a69e2b1b7f4fdfe5361d19428dc03bf4b8a9c1b Mon Sep 17 00:00:00 2001 From: Olivia <75871279+JacksonHei@users.noreply.github.com> Date: Wed, 26 Aug 2026 18:24:51 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=A7=BB=E9=99=A4=20layui.use=20?= =?UTF-8?q?=E5=BC=82=E6=AD=A5=E5=8C=85=E8=A3=B9=EF=BC=8C=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=E8=A1=A8=E5=8D=95=E6=8F=90=E4=BA=A4=E7=B4=A2=E5=BC=95=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E4=B8=A2=E5=A4=B1=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 问题描述 在 syncTableData() 执行表格重载后,表单提交时 form.val 无法获取 keys[0][columns] 的值(索引字段丢失)。 复现步骤 表单中使用 xmSelect 组件作为索引字段; 触发表格重载(如 syncTableData()); 提交表单,form.val 返回的数据中缺少 keys[0][columns]。 解决方案 移除 keyColumnMultiSelectRender 函数内的 layui.use 异步包裹,使 xmSelect.render 同步执行,确保 DOM 渲染完成后再收集表单数据。 --- src/plugin/admin/app/view/table/modify.html | 45 ++++++++++----------- 1 file changed, 21 insertions(+), 24 deletions(-) diff --git a/src/plugin/admin/app/view/table/modify.html b/src/plugin/admin/app/view/table/modify.html index 7168a5b..fda8c8f 100644 --- a/src/plugin/admin/app/view/table/modify.html +++ b/src/plugin/admin/app/view/table/modify.html @@ -646,30 +646,27 @@ } window.keyColumnMultiSelectRender = function () { - layui.use(["jquery", "xmSelect", "table"], function () { - let $ = layui.$; - let table = layui.table; - let columnData = table.getData("column-table"); - let data = []; - layui.each(columnData, function (i, item) { - if (item.field) { - data.push({ - name: item.field, value:item.field - }); - } - }); - layui.each($(".key-columns-div"), function (_, dom) { - let name = $(dom).attr("name"); - let value = $(dom).attr("value"); - let initValue = value ? value.split(",") : []; - layui.xmSelect.render({ - el: dom, - name: name, - initValue: initValue, - data: data, - }) - }); - + let $ = layui.$; + let table = layui.table; + let columnData = table.getData("column-table"); + let data = []; + layui.each(columnData, function (i, item) { + if (item.field) { + data.push({ + name: item.field, value:item.field + }); + } + }); + layui.each($(".key-columns-div"), function (_, dom) { + let name = $(dom).attr("name"); + let value = $(dom).attr("value"); + let initValue = value ? value.split(",") : []; + layui.xmSelect.render({ + el: dom, + name: name, + initValue: initValue, + data: data, + }) }); }