获取JSTree的JSON数据及其元数据

时间:2010-10-25 14:02:53

标签: jquery json metadata jstree stringification

我们正在使用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对象没有描述元数据的属性。

我们如何序列化对象及其元数据?

提前致谢,

  • 格雷格。

2 个答案:

答案 0 :(得分:9)

简要阅读文档,它看起来好像您应该使用节点上的属性来存储元数据。您可以使用HTML5“data-”属性:

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”参数告诉它获取整个树,你之前通过什么都不传递它。)

答案 1 :(得分:2)

您也可以使用此命名空间

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

还有其他方法可以获取所需的数据