diff --git a/_server/editor_mode.js b/_server/editor_mode.js index 0ae95972..f9a9375a 100644 --- a/_server/editor_mode.js +++ b/_server/editor_mode.js @@ -92,9 +92,25 @@ editor_mode = function (editor) { * @param {Object} pcobj */ var recursionParse = function (pfield, pcfield, pvobj, pcobj) { + var keysForTableOrder={}; + var voidMark={}; // 1. 按照pcobj排序生成 + if (pcobj && pcobj['_data']){ + for (var ii in pcobj['_data']) keysForTableOrder[ii]=voidMark; + } // 2. 对每个pvobj且不在pcobj的,再添加到最后 - var generate = function (ii) { + keysForTableOrder=Object.assign(keysForTableOrder,pvobj) + for (var ii in keysForTableOrder) { + // 3. 对于pcobj有但是pvobj中没有的, 弹出提示, (正常情况下editor_file会补全成null) + // 事实上能执行到这一步工程没崩掉打不开,就继续吧.. + if(keysForTableOrder[ii]===voidMark){ + if(typeof id_815975ad_ee6f_4684_aac7_397b7e392702==="undefined"){ + alert('comment和data不匹配,请在群 HTML5造塔技术交流群 959329661 内反馈') + console.error('comment和data不匹配,请在群 HTML5造塔技术交流群 959329661 内反馈') + id_815975ad_ee6f_4684_aac7_397b7e392702=1; + } + continue; + } var field = pfield + "['" + ii + "']"; var cfield = pcfield + "['_data']['" + ii + "']"; var vobj = pvobj[ii]; @@ -114,7 +130,7 @@ editor_mode = function (editor) { if (cobj[key] instanceof Function) cobj[key] = cobj[key](args); } // 标记为_hide的属性不展示 - if (cobj._hide) return; + if (cobj._hide)continue; if (!cobj._leaf) { // 不是叶节点时, 插入展开的标记并继续遍历, 此处可以改成按钮用来添加新项或折叠等 outstr.push(["--------", field, "\n"].join('')); @@ -126,18 +142,6 @@ editor_mode = function (editor) { guids.push(leafnode[1]); } } - - var done = {}; - if (pcobj && pcobj['_data']) { - for (var ii in pcobj['_data']) { - generate(ii); - done[ii] = true; - } - } - for (var ii in pvobj) { - if (done[ii]) continue; - generate(ii); - } } // 开始遍历 recursionParse("", "", obj, commentObj);