ошибка 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"