【问题标题】:Adding metadata to jsTree将元数据添加到 jsTree
【发布时间】:2011-01-22 05:14:42
【问题描述】:

我就是想不通,或者找不到任何文档。

我有一个简单的 JSON:

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

这被加载了,但我不知道如何写入这个字段,检索这个字段,并确保它是在创建新节点时生成的。

元数据的文档在哪里?

谢谢, 马可。

【问题讨论】:

    标签: json metadata jstree


    【解决方案1】:

    我在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 未定义
    • 我无法让它工作。我正在通过 AJAX 调用向我的节点发送数据——我是否需要 JSON 中的不同 data 节点和 metadata 节点?我能够在 JSON 中创建具有 id 和子级的树结构,而没有根 data 对象,即只有 {"id" : "3", "children" : [...]}
    【解决方案2】:

    谢谢,我正为此而失去理智。旧的例子都不起作用! 所以我终于可以访问元数据了,问题是我不知道如何迭代未知数量的元数据字段?

    好的,现在我已经检查过了,可以遍历 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) {...}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-01
      • 1970-01-01
      • 2013-12-12
      • 1970-01-01
      • 2021-07-20
      • 2021-11-17
      相关资源
      最近更新 更多