2010-10-25 7 views
6

Stiamo usando jstree per un editor di menu di navigazione, e sono state assegnando metadati per i nodi dell'albero in questo modo:Ottenere dati JSON di JSTree, ed è metadati

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

posso vedere che il data l'oggetto contiene le proprietà pertinenti, ma non troppo sicuro dove jquery mantiene i dati associati dopo questo punto.

Quando arriviamo per salvare i dati (serializzazione al nostro linguaggio server-side), i metadati sembra essere ignorato ...

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

L'oggetto json viene ispezionata per avere alcuna proprietà che descrive i metadati .

Come serializzare l'oggetto insieme ai relativi metadati?

Grazie in anticipo,

  • Greg.

risposta

8

Leggendo brevemente la documentazione, mi sembra che si debbano utilizzare gli attributi sui nodi per memorizzare i metadati. Si potrebbe utilizzare HTML5 "data-" attributi:

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

poi quando si fa il .get_json() dall'albero si dice quello che gli attributi che si desidera:

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

La funzione .get_json prende effettivamente liste dei nomi degli attributi, uno per i nodi <li> e uno per i nodi <a> (in questo ordine). Non so come sia il tuo albero, quindi non sono sicuro di dove sarebbero andati i tuoi attributi. (Inoltre che conduce "-1" l'argomento dice che per ottenere l'intero albero, che si stavano facendo in precedenza da solo di passaggio niente.)

2

si potrebbe utilizzare questo spazio dei nomi così

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

e ci sono anche altri metodi in cui è possibile ottenere i dati necessari

Problemi correlati