Доступ к dataItem внутри функции Transport.read
-
21-12-2019 - |
Вопрос
Этот вопрос является зеркалом эта почта на форуме Телерика, который я разместил вчера.
У меня есть TreeView с HierarchicalDataSource, и мой вопрос прост:Могу ли я получить доступ к текущему элементу данных в функции Transport.read?
Например, рассмотрим этот код:
new kendo.data.HierarchicalDataSource({
transport: {
read: function(options) {
// Here i'll prepare my url to be called
return "my/controller/" + dataItem.Id;
}
}
});
Я хочу получить доступ к свойствам dataItem текущего расширяющегося узла внутри функции чтения.Это возможно?
Я пробовал много способов, но область внутри этой функции не дает мне доступа ни к чему за ее пределами.
ОБНОВЛЯТЬ:
Предложение @OnaBai сработало - в моем случае - Value
собственности, учитывая следующую модель:
{
id: "Value",
hasChildren: "HasChildren"
};
Но я хочу иметь доступ к большему, чем просто Id
но весь dataItem
.Я попытался добавить свойства dataItem или запроса в модель, но это не сработало:
{
id: "Value",
hasChildren: "HasChildren",
fields: {
ParentId: { type: "string" }
}
};
ParentId
исходит из запроса и доступен в dataItem
, но не в options
внутри read
функция.Есть другой способ сделать это?
ОБНОВЛЕНИЕ 2:
Хитрый способ сделать это можно добиться, установив идентификатор модели на uid
:
{
id: "uid"
}
Функция получит uid, а затем вы сможете получить его из источника данных, например. dataSource.getByUid()
.
Решение
При условии, что Id
тот id
определено в вашей модели, вам следует сделать:
new kendo.data.HierarchicalDataSource({
transport: {
read: function(options) {
return "my/controller/" + options.Id;
}
}
});
Посмотрите пример здесь: http://jsfiddle.net/OnaBai/mE4zZ/2/
РЕДАКТИРОВАТЬ:Если вам нужен доступ к полной модели, то id
вы можете использовать get
метод в источнике данных для получения элемента.
Пример:
var ds = new kendo.data.HierarchicalDataSource({
transport: {
read: function(options) {
if (options.Id) {
var item = ds.get(options.Id);
// Do whatever else you need with Item
}
return "my/controller/" + options.Id;
}
}
});
Модифицированный JSFiddle здесь http://jsfiddle.net/OnaBai/mE4zZ/3/