comment obtenir les métadonnées de jsTree.
C'est mon code:
$("#demo1").jstree({
"themes": {
"theme": "default",
"dots": true,
"icons": true,
"url": "static/themes/default/style.css"
},
"ui" : {
//this makes the node with ID node_4 selected onload
"initially_select" : [ location.hash.slice(1).split('@')[1]]
},
"json_data" : {
"data" : [
{
"data" : "A node",
"attr" : { "id" : "1" ,time:1321},
"callback":function(){alert('sss')},
"children" : [
{
"data" : "ttt node",
"children" : [ "Child 1", "Child 2" ]
}
]
},
{
"attr" : { "id" : "2" },
"data" : {
"title" : "Long format demo",
"attr" : { "href" : "#" }
}
},
{
"data" : "sss node",
"attr" : { "id" : "3" },
"children" : [
{
"data" : "bbb node"
}
,
{
"data" : "kkkk node",
"attr" : { "id" : "11" },
"children" : [
{
"data" : "oooo node",
"children" : [ "pppp", "nnnn" ]
}
]
},
]
},
{
"data" : "wwqq node",
"attr" : { "id" : "4" },
"children" : [ "Child 1", "Child 2" ]
},
{
"data" : "hhh node",
"attr" : { "id" : "5" },
"metadata ":"i am the metadata",
"children" : [
{
"data" : "A node",
"children" : [
{
"data" : "ttt node",
"children" : [ "Child 1", "Child 2" ]
}
]
},
{
"data" : "bbb node"
}
]
},
]
},
/*
"sort":function (a, b) {
return this.get_text(a) < this.get_text(b) ? 1 : -1;
},
////*/
"contextmenu":{
"show_at_node":false,
"items":{
//"ccp":false,
"sort" : {
//The item label
"label" : "sort",
/* The function to execute upon a click
"action" : function (obj) {
var fn=function (a, b) {return this.get_text(a) < this.get_text(b) ? 1 : -1;}
this.changeSort(obj,fn);
},
//*/
//All below are optional
"_disabled" : false, //clicking the item won't do a thing
"_class" : "sort", //class is applied to the item LI node
"separator_before" : false, //Insert a separator before the item
"separator_after" : true, //Insert a separator after the item
//false or string - if does not contain `/` - used as classname
"icon" : false,
"submenu" : {
"name":{
"label" : "name",
"action": function (obj) {
var fn=function (a, b) {return this.get_text(a) < this.get_text(b) ? 1 : -1;}
this.changeSort(obj,fn);
}
},
"time":{
"label" : "time",
"action": function (obj) {
var fn=function (a, b) {return this.get_text(a) < this.get_text(b) ? 1 : -1;}
this.changeSort(obj,fn);
}
}
}
},
"icons":{
"label" : "icons",
"action":function(obj){window.a=obj;},
"submenu" : {
"apple":{
"label" : "apple",
"action": function (obj) {
this.set_theme('apple');
}
},
"classic":{
"label" : "classic",
"action": function (obj) {
this.set_theme('classic');
}
},
"default":{
"label" : "default",
"action": function (obj) {
this.set_theme('default');
}
}
}
}
}
},
"core" : { "initially_open" : [ ] },
"plugins" : [ "themes", "json_data","crrm","ui","contextmenu","search","sort" ]
})
.bind("search.jstree", function (e, data) {
alert("Found " + data.rslt.nodes.length + " nodes matching '" + data.rslt.str + "'.");
});
j'ai mis les métadonnées:
"metadata ":"i am the metadata",
et que vous voulez l'obtenir quand je clic droit sur "contextmenu" :
"icons":{
"label" : "icons",
"action":function(obj){console.log(this.data);},
Je montre ça.les données de suivre cette l'article:
//the `metadata` property will be saved using the jQuery `data` function on the `li` node
metadata : "a string, array, object, etc",
mais je ne peux pas le faire, que puis-je faire?
Veuillez envisager de déplacer les accepté de répondre à stackoverflow.com/a/7731120/466771 La meilleure réponse n'est pas correcte (plus).
OriginalL'auteur zjm1126 | 2010-08-30
Vous devez vous connecter pour publier un commentaire.
JsTree stocke les métadonnées avec jQuery:
Pour accéder à ces métadonnées utilisation:
Par exemple, une fois que vous passer quelques
DateTime
objet au format json:Accès:
Cela ne fonctionne plus. Peut-être qu'il fait, mais pas avec la version la plus récente. Ceci fonctionne: stackoverflow.com/a/7731120/466771
OriginalL'auteur stan-z
La accepté de répondre ne fonctionne pas avec la dernière version de jsTree. Voici une mise à jour de l'exemple du bâtiment sur la précédente.
Accéder aux données:
obj
deundefined
OriginalL'auteur justind
vous pouvez obtenir le plein nœud à l'aide de get_node fonction de jstree comme
var node = $(container).jstree().get_node("node_id");
ensuite, vous pouvez accéder aux données à partir de
node.original.metadata
OriginalL'auteur Jeronimo Robles
Aucune de ces deux solutions n'a fonctionné pour moi. Ce n'est la suivante:
Grâce
OriginalL'auteur Gabriel G
Je travaille avec jstree 1.0-rc3, daté 2011-02-09. Tout d'abord, j'ai trouvé que l'affectation d'une chaîne de métadonnées
"metadata ":"i am the metadata"
n'a pas fonctionné. Il a dû être un objet JSON. Mon arbre est représenté par une structure de répertoire à partir de la racine du dossier "exercices" je tiens donc à chaque nœud de stocker le chemin d'accès sur le serveur où la structure de répertoire est stocké. Le serveur envoie les données JSON (simplifié pour plus de clarté) comme ceci:J'utilise le chemin de la valeur à partir des métadonnées de construire l'URL de la requête AJAX est envoyé lorsque vous ouvrez un dossier qui contient d'autres dossiers ou fichiers. La propriété url de l'ajax biens utilisés pour configurer l'arbre ressemble à ceci:
Comme promis par de la documentation, nous pouvons utiliser la fonction data() sur le nœud passé à l'url de la fonction et de se cacher dans l'objet renvoyé est le chemin d'accès à la propriété.
OriginalL'auteur DavidHyogo