7

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

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

提前致谢,

  • 格雷格。
4

2 回答 2

9

简要阅读文档,在我看来,您应该使用节点上的属性来存储元数据。您可以使用 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”参数告诉它获取整个树,您之前只是通过什么都不传递来执行此操作。)

于 2010-10-25T15:11:29.860 回答
2

你也可以使用这个命名空间

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

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

于 2015-02-12T12:10:36.733 回答