将元数据添加到jsTree

时间:2011-01-22 05:14:42

标签: json metadata jstree

我无法解决这个问题,或者找不到任何文档。

我有一个简单的JSON:

{   “数据”:“节点”,   “元数据”:{“content”:“hellooooo”} }

这会加载,但我无法弄清楚如何写入此字段,检索此字段,并确保在创建新节点时创建它。

元数据的文档在哪里?

谢谢, 马可。

2 个答案:

答案 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) {...}