2010-10-25 33 views
6

Estamos utilizando jstree para un editor de menús de navegación, y han sido la asignación de metadatos a los nodos del árbol de la siguiente manera:Obtener datos JSON de JSTree, y es metadatos

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

puedo ver que el data objeto contiene las propiedades relevantes, pero no está muy seguro de dónde jquery conserva los datos asociados después de este punto.

Cuando llegamos a guardar los datos (serialización que en nuestro lenguaje de servidor), los metadatos parece ser ignorado ...

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

se inspecciona El objeto json que no tienen ninguna propiedad que describe los metadatos .

¿Cómo serializamos el objeto junto con sus metadatos?

Gracias de antemano,

  • Greg.

Respuesta

8

Al leer la documentación brevemente, me parece que debería usar atributos en los nodos para almacenar sus metadatos. Se podría utilizar HTML5 "Data-" Atributos:

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

entonces cuando hace lo .get_json() del árbol que usted le indique qué atributos que desea:

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

La función .get_json realmente tiene listas de nombres de atributos, uno para nodos <li> y uno para nodos <a> (en ese orden). No sé cómo es tu árbol, así que no estoy seguro de a dónde irán tus atributos. (También que conduce "-1" argumento le dice que para conseguir todo el árbol, lo que usted hacía anteriormente, mediante el simple nada.)

2

podría utilizar este espacio de nombres, así

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

y también hay otros métodos donde puede obtener los datos que necesita