我无法解决这个问题,或者找不到任何文档。
我有一个简单的JSON:
{ “数据”:“节点”, “元数据”:{“content”:“hellooooo”} }
这会加载,但我无法弄清楚如何写入此字段,检索此字段,并确保在创建新节点时创建它。
元数据的文档在哪里?
谢谢, 马可。
答案 0 :(得分:7)
我在http://groups.google.com/group/jstree/browse_thread/thread/28d0c8d3eb2d9f8f
找到答案如果您正在使用JSON并且已交付 你的节点有这样的元数据:
{
"data": "This is the name of the node",
"metadata": {
"number": "no1",
"description": "Description"
}
}
...你将能够获得(并设置) 像这样的数据:
$('div#jstree').jstree(
/* ...options... */
).bind('select_node.jstree',
function(e, data){
alert( $(data.rslt.obj).data('description')
); });
这适用于最新的提交 (RC3 / R233)。在旧版本中,它使用
$(data.rslt.obj).data("jstree").description
最后一个解决方案对我有用(现在的默认下载是rc2)。
答案 1 :(得分:1)
谢谢,我对此失去了理智。没有一个旧例子有效! 所以我终于可以访问元数据,问题是我不知道如何迭代未知数量的元数据字段?
好的,现在我已经检查了它,并且可以迭代data()返回的对象,没有命名参数.bind("select_node.jstree", function (e, data) {
var propsObj = $(data.rslt.obj).data();
for (var prop in propsObj) {
alert(prop + " = " + propsObj[prop] + "\n");
}
});
如果你需要避免jstree_children数据妨碍你,我认为最好的方法是将元数据封装到另一个对象中,如下所示:
"metadata" : {"properties" : {"prop1" : "aa1a", "prop2" : "123"}}
然后你可以使用:
进行迭代var metadata = $(data.rslt.obj).data();
for (var prop in metadata.properties) {...}