ошибка Cannot read property 'name' of undefined при открытии страницы редактирования через мастер раздела
Раздел создан сторонним пользователем
ошибка вылетает в методе, когда он пытается обратиться к элементу name контейнера e в файле all-combined.js
needFlatten: function(e, t) { var a = t || !1; return (a = !Ext.isEmpty(e.name)) || (Ext.isArray(e) && e.length > 0 ? a = !Ext.isEmpty(e[0].name) : Ext.isObject(e) && Terrasoft.each(e, function(e) { a = this.needFlatten(e, a) }, this)), a },
трэйс начинается условно от ViewModelSchemaValidationMixin.js в методе getSchemaDuplicates
здесь соотвественно всё останавливается на методе Terrasoft.JsonDiffer.getFlatObject
getSchemaDuplicates: function(schema) { const viewConfig = schema.viewConfig; const messageConfig = {}; const result = []; const pathDelimiter = Terrasoft.JsonDiffer.pathDelimiter; const flatViewConfig = Terrasoft.JsonDiffer.getFlatObject(viewConfig, {identifyItemByPath: true}); Object.keys(flatViewConfig).forEach(function(path) { const name = path.split(pathDelimiter).pop(); const formattedPath = path.split(pathDelimiter).join("."); const diffObject = flatViewConfig[path]; const caption = diffObject.caption || (diffObject.labelConfig && diffObject.labelConfig.caption) || ""; messageConfig[name] = messageConfig[name] || []; messageConfig[name].push({ path: formattedPath, caption: caption }); }); Object.keys(messageConfig).forEach(function(name) { if (messageConfig[name].length > 1) { result.push({ name: name, items: messageConfig[name] }); } }); return result; },
В чем может быть причина? И буду рад советами по отладке такого клиентского кода, когда я пытался в all-combined.js ставить брэйкпоинты, у меня словно всё зависало просто
Нравится
Григорий Чех,
ни та ни та причина. причина оказалась в свойстве
"contentType": Terrasoft.ContentType.DROPDOWN
после того, как закомментировал его, всё заработало. Только теперь я не могу найти что это за свойство и какие значения оно может принимать помимо DROPDOWN и есть ли вообще у него такое значение?
{ "operation": "insert", "name": "ITExecutor", "values": { "enabled": false, "layout": { "contentType": Terrasoft.ContentType.DROPDOWN, "colSpan": 12, "rowSpan": 1, "column": 12, "row": 0, "layoutName": "Header" }, "bindTo": "ITExecutor" }, "parentName": "Header", "propertyName": "items", "index": 1 }
Григорий Чех,
разобрался. свойство "contentType" должно находится внутри "values", а не "layout"