2010-10-25 15 views
6

Nous utilisons jstree pour un éditeur de menu de navigation, et ont été attribuer des métadonnées aux nœuds de l'arbre comme ceci:Obtenir des données JSON de JSTree et ses métadonnées

var data = currentNode.data("jstree"); 
data.title = textBoxTitle.val(); 
data.linkType = textBoxLink.val(); 

Je peux voir que le data object contient les propriétés appropriées, mais ne sait pas trop où jquery conserve les données associées après ce point.

Lorsque nous arrivons à enregistrer les données (sérialisation à notre langue côté serveur), les métadonnées semble être ignoré ...

var json = jQuery.jstree._reference(tree).get_json(); 
var jsonString = JSON.stringify(json); 

L'objet json est inspecté pour avoir aucune propriété décrivant les métadonnées .

Comment sérialiser l'objet avec ses métadonnées?

Merci à l'avance,

  • Greg.

Répondre

8

En lisant brièvement la documentation, il me semble que vous devriez utiliser des attributs sur les nœuds pour stocker vos métadonnées. Vous pouvez utiliser HTML5 « Data- » Attributs:

currentNode.attr('data-title', textBoxTitle.val()); 
currentNode.attr('data-link-type', textBoxLink.val()); 

puis quand vous faites le .get_json() de l'arbre que vous lui dites ce que vous voulez attributs:

var json = jQuery.jstree._reference(tree).get_json(-1, ['data-title', 'data-link-type', 'id', 'class']); 

La fonction .get_json prend effectivement 2 listes des noms d'attribut, un pour les nœuds <li> et un pour les nœuds <a> (dans cet ordre). Je ne sais pas à quoi ressemble votre arbre, donc je ne sais pas où vont vos attributs. (Également que leader « -1 » argument indique pour obtenir l'arbre entier, que vous faisiez auparavant par rien de passage.)

2

vous pouvez utiliser cet espace de noms et

$('#treeid').data().jstree 
$('#treeid').data().jstree.get_json() 

et aussi il y a d'autres méthodes où vous pouvez obtenir les données dont vous avez besoin