L'accès dataItem à l'intérieur de transport.la fonction de lecture
-
21-12-2019 - |
Question
Cette question est un miroir de ce post sur Telerik du Forum que j'ai posté hier.
J'ai un TreeView avec HierarchicalDataSource et ma question est simple:Puis-je accéder à la dataItem dans le transport.la fonction de lecture?
Considérez par exemple ce code:
new kendo.data.HierarchicalDataSource({
transport: {
read: function(options) {
// Here i'll prepare my url to be called
return "my/controller/" + dataItem.Id;
}
}
});
Je veux accéder à la dataItem les propriétés de l'actuelle expansion nœud à l'intérieur de la fonction de lecture.Est-ce possible?
J'ai essayé de nombreuses façons, mais le champ d'application à l'intérieur de cette fonction me donne accès à rien en dehors d'elle.
Mise à JOUR:
@OnaBai suggestion travaillé avec - dans mon cas - Value
bien, étant donné le modèle suivant:
{
id: "Value",
hasChildren: "HasChildren"
};
Mais je veux être en mesure d'accéder à plus que juste Id
mais l'ensemble de la dataItem
.J'ai essayé d'ajouter dataItem, ou demande - propriétés du modèle, mais il n'a pas travaillé:
{
id: "Value",
hasChildren: "HasChildren",
fields: {
ParentId: { type: "string" }
}
};
ParentId
vient de la demande et son accessibles dans dataItem
, mais pas dans options
à l'intérieur de read
fonction.Il y a une autre façon de le faire ?
Mise à JOUR 2:
Une délicate façon de faire ceci peut être réalisé en fixant le modèle de l'id de uid
:
{
id: "uid"
}
La fonction recevra l'uid et puis vous pouvez l'obtenir à partir de la source de données avec, par exemple, dataSource.getByUid()
.
La solution
En supposant que Id
l' id
définis dans votre modèle, vous devez faire:
new kendo.data.HierarchicalDataSource({
transport: {
read: function(options) {
return "my/controller/" + options.Id;
}
}
});
Voir un exemple ici : http://jsfiddle.net/OnaBai/mE4zZ/2/
MODIFIER:Si vous avez besoin d'accéder à l'intégralité du modèle alors connu sous le nom id
vous pouvez utiliser get
la méthode de la source de données pour l'obtention de l'élément.
Exemple:
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;
}
}
});
Modifié JSFiddle ici http://jsfiddle.net/OnaBai/mE4zZ/3/