我们正在使用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
对象没有描述元数据的属性。
我们如何序列化对象及其元数据?
提前致谢,
答案 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()
还有其他方法可以获取所需的数据