2010-10-25 10 views
6

Używamy jstree do edytora menu nawigacji i zostały przypisywanie metadanych do węzłów drzewa tak:Pobieranie danych JSON JSTree, a to metadane

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

widzę że data obiekt zawiera odpowiednie właściwości, ale nie jest zbyt pewny, gdzie jquery przechowuje powiązane dane po tym punkcie.

Kiedy przychodzimy, aby zapisać dane (szeregowania je do naszego języka po stronie serwera), metadane wydaje się być ignorowane ...

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

Przedmiotem json jest kontrolowane, aby nie mają właściwości opisujące metadane .

Jak serializować obiekt wraz z jego metadanymi?

Dzięki z góry,

  • Greg.

Odpowiedz

8

Krótko mówiąc, wygląda na to, że powinieneś używać atrybutów w węzłach do przechowywania metadanych. Można używać HTML5 „teleinformatyczny” atrybuty:

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

następnie po wykonaniu .get_json() z drzewa powiedzieć to co chcesz atrybuty:

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

Funkcja .get_json faktycznie ma list nazw atrybutów, jeden dla węzłów <li> i jeden dla węzłów <a> (w tej kolejności). Nie wiem, jak wygląda twoje drzewo, więc nie jestem pewien, gdzie się podziały twoje atrybuty. (Także, że prowadząc „-1” Argument informuje go dostać całe drzewo, co robiłeś wcześniej po prostu przechodzącej niczym.)

2

można używać tej przestrzeni nazw, jak również

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

a także nie są inne metody, dzięki którym uzyskasz potrzebne dane