Мне нужно составить древовидный список, который получает метаданные из другой конечной точки каждый раз, когда выполняется запрос на чтение, но, очевидно, просто получить работу корневого уровня оказывается проблемой.
Может кто-нибудь увидеть, что ясделали неправильно здесь ...
function build(meta) {
var grid = $('[name=treelist]');
// ifthere's a previous grid, rip it out
var oldGrid = grid.data("kendoTreeList");
if (oldGrid) {
oldGrid.destroy();
grid.empty();
}
var rootData = meta.Properties.map(function (i) {
return {
Id: i.Name,
ParentId: null,
ServerType: i.ServerType,
ParentType: { Id: null, Name: meta.Name, Type: meta.ServerType, Meta: meta },
Name: i.Name,
Type: i.Type,
Expression: "",
CanExpand: i.Type === "object" || i.Type === "array",
Meta: i
};
});
// build config for the new grid
var config = {
dataSource: new kendo.data.TreeListDataSource({
transport: {
read: function(o) {
o.success(rootData);
}
},
data: rootData,
schema: {
model: {
id: "Id",
parentId: "ParentId",
hasChildren: "CanExpand",
fields: {
Name: { field: "Name", type: "string" },
Type: { field: "Type", type: "string" },
Expression: { field: "Expression", type: "string" }
}
}
}
}),
columns: [
{
title: "",
width: 70,
template: "<input name='Selected' type='checkbox' data-bind='checked: Selected' #= data.Selected ? checked='checked' : '' #/>"
},
{ field: 'Id', title: 'Path' },
{ field: 'Name', title: 'Name' },
{ field: 'Type', title: 'Type' },
{ title: "Expression", template: "<input name='expression' type='text' />" },
]
};
// tell kendo to build it
grid.kendoTreeList(config);
}
... этот код устанавливает список деревьев, но затем отображает сообщение "нет записей", даже если в базовом наборе есть записи, и я установил его для свойства dataи всегда возвращаться при чтении конфигурации транспорта.
Я не получаю никаких исключений / предупреждений, просто пустой список.