jsTree v 3+:如何在制作 jsTree 时使用 JSON 格式为“类型”插件传递 [类型] 信息?

Posted

技术标签:

【中文标题】jsTree v 3+:如何在制作 jsTree 时使用 JSON 格式为“类型”插件传递 [类型] 信息?【英文标题】:jsTree v 3+ : How to pass [Type] information for the 'Types' plugin using the JSON format in making a jsTree? 【发布时间】:2014-08-29 17:42:15 【问题描述】:

我想使用http://www.jstree.com/docs/json/ 给出的“使用 JSON 填充树”中的 JSON 格式创建一个 jsTree(v 3.0.2)

// Expected format of the node (there are no required fields)

  id          : "string" // will be autogenerated if omitted
  text        : "string" // node text
  icon        : "string" // string for custom
  state       : 
    opened    : boolean  // is the node open
    disabled  : boolean  // is the node disabled
    selected  : boolean  // is the node selected
  ,
  children    : []  // array of strings or objects
  li_attr     :   // attributes for the generated LI node
  a_attr      :   // attributes for the generated A node

从实例中,我使用以下方法创建树:

// create the instance
$('#jstree').jstree(

  "core": 
    "animation": 150,
    "check_callback":true,
    'data': new_data //json object
  ,
  "types": 
    "#": 
      "valid_children": ["folder"]
    ,
    "folder": 
      "valid_children": ["file"]
    ,
    "file": 
      "valid_children": [""]
    
  ,
  "plugins": ["dnd", "search", "wholerow", "types"]
);

我想确保文件夹不会进入其他文件夹,文件不会进入其他文件。文件只在文件夹中。

我想知道如何在我的 json 对象 (new_data) 中传递“类型”信息,以便应用类型。

我已经能够让$("#jstree").jstree("set_type", $(this), "file"); 方法工作,但我不喜欢脏检查方法。另外,我希望将类型应用于 JSON 中,并且 NOT 外部

另外,我不想在拖放时使用这些方法来执行检查。我希望在可以/不可以将元素放在另一个地方时出现视觉提示(请参见下面的屏幕截图)

【问题讨论】:

【参考方案1】:

对于 jstree 3.x 版本:回答关于如何通过 JSON 对象中的“类型”信息,您必须声明与其他节点属性(如 id、文本)处于同一级别的类型属性。例如,节点的更新格式现在看起来像这样。注意添加了 type 属性。

// Expected format of the node (there are no required fields)

  id          : "string" // will be autogenerated if omitted
  text        : "string" // node text
  icon        : "string" // string for custom
  state       : 
    opened    : boolean  // is the node open
    disabled  : boolean  // is the node disabled
    selected  : boolean  // is the node selected
  ,
  children    : []  // array of strings or objects
  li_attr     :   // attributes for the generated LI node
  a_attr      :   // attributes for the generated A node
  type        : "string"

一个示例节点 json 表示看起来像

"id":"179356","text":"Node Name 1","state": "opened":false,"disabled":false,"selected":false,"children":true,"li_attr": "nodeType":"C","itemId":"12345","type":"file"

链接中也讨论了这个问题: https://github.com/vakata/jstree/issues/473

【讨论】:

以上是关于jsTree v 3+:如何在制作 jsTree 时使用 JSON 格式为“类型”插件传递 [类型] 信息?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以从jstree拖放到jqgrid?

jsTree:如何从 jstree 获取所有叶节点?

JSTREE动态加载子节点

jsTree:如何从 jstree 获取所有节点?

使用 Jackson 将 JSON 字符串递归构建到 jsTree

jsTree:如何将选定节点的 ID 获取到 jsTree 中的根节点?