From 0c2a65457afd4ce58198890c88d947ef33e1e0eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B4=A4=E5=BF=83?= <3277200+sentsim@users.noreply.github.com> Date: Mon, 23 Oct 2023 09:21:57 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20`treeTable.removeNode()`?= =?UTF-8?q?=20=E5=9C=A8=E5=BC=80=E5=90=AF=20`data`=20=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E6=97=B6=E5=88=A0=E9=99=A4=E5=BC=82=E5=B8=B8=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/modules/treeTable.js | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/src/modules/treeTable.js b/src/modules/treeTable.js index 1bdd7d57..38959799 100644 --- a/src/modules/treeTable.js +++ b/src/modules/treeTable.js @@ -421,45 +421,48 @@ layui.define(['table'], function (exports) { return; } - // 用index + // 用 index return that.getNodeByIndex(dataIndex); } - // 通过index获取节点数据 + // 通过 index 获取节点数据 Class.prototype.getNodeDataByIndex = function (index, clone, newValue) { var that = this; var options = that.getOptions(); var treeOptions = options.tree; var tableId = options.id; + var tableCache = table.cache[tableId]; - var dataCache = table.cache[tableId][index]; + // 获取当前行中的数据 + var dataCache = tableCache[index]; + + // 若非删除操作,则返回合并后的数据 if (newValue !== 'delete' && dataCache) { $.extend(dataCache, newValue); return clone ? $.extend({}, dataCache) : dataCache; } - var tableData = that.getTableData(); - index += ''; - var indexArr = index.split('-'); + // 删除操作 + var dataRet = tableCache; + var indexArr = String(index).split('-'); - var dataRet = tableData; - var tableCache = (options.url || indexArr.length > 1) ? null : table.cache[tableId]; // 只有在删除根节点的时候才需要处理 + // if (options.url || indexArr.length > 1) tableCache = null // 只有在删除根节点的时候才需要处理 + + // 根据 index 进行数据处理 for (var i = 0, childrenKey = treeOptions.customName.children; i < indexArr.length; i++) { if (newValue && i === indexArr.length - 1) { - if (newValue === 'delete') { - // 删除 - if (tableCache) { - // 同步cache + if (newValue === 'delete') { // 删除并返回当前数据 + // 同步 cache --- 此段代码注释缘由:data 属性模式造成数据重复执行 splice (@Gitee: #I7Z0A/I82E2S) + /*if (tableCache) { layui.each(tableCache, function (i1, item1) { if (item1[LAY_DATA_INDEX] === index) { tableCache.splice(i1, 1); return true; } }) - } + }*/ return (i ? dataRet[childrenKey] : dataRet).splice(indexArr[i], 1)[0]; - } else { - // 更新值 + } else { // 更新值 $.extend((i ? dataRet[childrenKey] : dataRet)[indexArr[i]], newValue); } }