【发布时间】:2011-01-22 05:14:42
【问题描述】:
我就是想不通,或者找不到任何文档。
我有一个简单的 JSON:
{ “数据”:“节点”, “元数据”:{“内容”:“hellooooo”} }
这被加载了,但我不知道如何写入这个字段,检索这个字段,并确保它是在创建新节点时生成的。
元数据的文档在哪里?
谢谢, 马可。
【问题讨论】:
我就是想不通,或者找不到任何文档。
我有一个简单的 JSON:
{ “数据”:“节点”, “元数据”:{“内容”:“hellooooo”} }
这被加载了,但我不知道如何写入这个字段,检索这个字段,并确保它是在创建新节点时生成的。
元数据的文档在哪里?
谢谢, 马可。
【问题讨论】:
我在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)。
【讨论】:
data.rslt 未定义
data 节点和 metadata 节点?我能够在 JSON 中创建具有 id 和子级的树结构,而没有根 data 对象,即只有 {"id" : "3", "children" : [...]}
谢谢,我正为此而失去理智。旧的例子都不起作用! 所以我终于可以访问元数据了,问题是我不知道如何迭代未知数量的元数据字段?
好的,现在我已经检查过了,可以遍历 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) {...}
【讨论】: