mirror of
https://github.com/openwrt/luci.git
synced 2026-05-31 10:31:55 +08:00
luci-base: keep not yet rendered clone elements
`handleClone` triggers `checkDepends` and also `parse` on `this.map.save` which in turn also removes not yet rendered elements like clones. This is not wanted and therefore guarded against. Signed-off-by: Christian Korber <ckorber@tdt.de>
This commit is contained in:
committed by
Paul Donald
parent
41e3fc3703
commit
ec54122a48
@@ -1309,6 +1309,12 @@ const CBIAbstractSection = CBIAbstractElement.extend(/** @lends LuCI.form.Abstra
|
||||
const sids = this.cfgsections();
|
||||
|
||||
for (let i = 0, sid = sids[0]; (sid = sids[i]) != null; i++) {
|
||||
/*
|
||||
* do not remove elements that are not rendered yet
|
||||
*/
|
||||
if (!this.map.findElement('data-section-id', sid))
|
||||
continue;
|
||||
|
||||
for (let j = 0, o = this.children[0]; (o = this.children[j]) != null; j++) {
|
||||
let isActive = o.isActive(sid);
|
||||
const isSatisfied = o.checkDepends(sid);
|
||||
@@ -2155,7 +2161,11 @@ const CBIAbstractValue = CBIAbstractElement.extend(/** @lends LuCI.form.Abstract
|
||||
}
|
||||
}
|
||||
else if (this.forcewrite || !isEqual(cval, fval)) {
|
||||
return Promise.resolve(this.write(section_id, fval));
|
||||
/*
|
||||
* do not remove elements that are not rendered yet
|
||||
*/
|
||||
if (this.map.findElement('data-field', this.cbid(section_id)) != null)
|
||||
return Promise.resolve(this.write(section_id, fval));
|
||||
}
|
||||
}
|
||||
else if (!this.retain) {
|
||||
|
||||
Reference in New Issue
Block a user