Получение JSON-данных JSTree и их метаданных - PullRequest
7 голосов
/ 25 октября 2010

Мы используем jstree для редактора меню навигации и назначаем метаданные узлам дерева следующим образом:

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

Я вижу, что объект data содержит соответствующие свойства, но не совсем уверен, где jquery хранит связанные данные после этой точки.

Когда мы сохраняем данные (сериализуя их на наш серверный язык), метаданные, похоже, игнорируются ...

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

Объект json проверяется на отсутствие свойства, описывающего метаданные.

Как мы сериализуем объект вместе с его метаданными?

Заранее спасибо,

  • Greg.

Ответы [ 2 ]

9 голосов
/ 25 октября 2010

Если кратко прочитать документацию, мне кажется, что вы должны использовать атрибуты на узлах для хранения своих метаданных. Вы можете использовать атрибуты data5 в HTML5:

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

затем, когда вы делаете .get_json() из дерева, вы говорите ему, какие атрибуты вы хотите:

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

Функция .get_json фактически принимает 2 списков имен атрибутов, один для <li> узлов и один для <a> узлов (в этом порядке). Я не знаю, как выглядит твое дерево, поэтому я не уверен, куда пойдут твои атрибуты. (Также этот ведущий аргумент «-1» говорит ему получить целое дерево, которое вы делали ранее, просто ничего не передавая.)

2 голосов
/ 12 февраля 2015

вы также можете использовать это пространство имен

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

, а также есть другие методы, где вы можете получить необходимые данные

...