Skip to content

Commit 98f3294

Browse files
authored
Merge pull request #11747 from 2betop/fix-input-table
fix: 修复事件获取的删除元素成员错误的问题
2 parents 450f65e + 875e18b commit 98f3294

File tree

1 file changed

+19
-6
lines changed

1 file changed

+19
-6
lines changed

packages/amis/src/renderers/Form/InputTable.tsx

+19-6
Original file line numberDiff line numberDiff line change
@@ -2248,12 +2248,25 @@ export class TableControlRenderer extends FormTable {
22482248
const deletedItems: any = [];
22492249

22502250
if (args?.index !== undefined) {
2251-
const indexs = String(args.index).split(',');
2252-
indexs.forEach(i => {
2253-
const indexes = i.split('.').map(item => parseInt(item, 10));
2254-
deletedItems.push(getTree(items, indexes));
2255-
items = spliceTree(items, indexes, 1);
2256-
});
2251+
String(args.index)
2252+
.split(',')
2253+
.map(i => i.split('.').map(item => parseInt(item, 10)))
2254+
// 从右向左遍历,这样才不会出现索引失效
2255+
.sort((a, b) => {
2256+
const len = Math.max(a.length, b.length);
2257+
for (let i = 0; i < len; i++) {
2258+
const aVal = a[i] || 0;
2259+
const bVal = b[i] || 0;
2260+
if (aVal !== bVal) {
2261+
return bVal - aVal;
2262+
}
2263+
}
2264+
return 0;
2265+
})
2266+
.forEach(indexes => {
2267+
deletedItems.push(getTree(items, indexes));
2268+
items = spliceTree(items, indexes, 1);
2269+
});
22572270
} else if (args?.condition !== undefined) {
22582271
const promises: Array<() => Promise<any>> = [];
22592272
everyTree(items, (item, index, level, paths, indexes) => {

0 commit comments

Comments
 (0)