问题
写【草书文档】这个应用的时候用到了目录树,相关配置挺多的,留存一下。
jstree中文官网
jsttee英文官网
英文官网要比中文的版本高一些,所以用要用github最新版的,看文档就都差不多了。
代码解析
- $("#menu").jstree({
- "core": {
- "check_callback" : true,
- "themes": {"stripes": true},
- "data": d.menu
- },
- contextmenu : {
- items : function(node){
- let menu = {
- createCatalog : {
- label : "新建目录",
- icon : "fa fa-folder-open",
- action : function (node) {
- var inst = $.jstree.reference(node.reference),
- obj = inst.get_node(node.reference);
- inst.create_node(obj, {type:"catalog"}, "last", function (new_node) {
- console.log(new_node)
- try {
- new_node.text="新建目录";
- inst.edit(new_node);
- } catch (ex) {
- setTimeout(function () { inst.edit(new_node); },0);
- }
- })
- }
- },
- createPage : {
- label: "新建文档",
- icon: "fa fa-file-o",
- action : function (node) {
- var inst = $.jstree.reference(node.reference),
- obj = inst.get_node(node.reference);
- inst.create_node(obj, {type:"page"}, "last", function (new_node) {
- console.log(new_node)
- try {
- new_node.text="新建文档";
- inst.edit(new_node);
- } catch (ex) {
- setTimeout(function () { inst.edit(new_node); },0);
- }
- })
- }
- },
- rename : {
- label: "重命名",
- icon: "fa fa-share",
- action : function (node) {
- var inst = $.jstree.reference(node.reference),
- obj = inst.get_node(node.reference);
- inst.edit(obj);
- }
- },
- delete : {
- label: "删除",
- icon: "fa fa-times",
- action : function (node) {
- var inst = $.jstree.reference(node.reference),
- obj = inst.get_node(node.reference);
- if(inst.is_selected(obj)) {
- inst.delete_node(inst.get_selected());
- } else {
- inst.delete_node(obj);
- }
- }
- },
- }
- if(node.type == "page"){
- // 文档-重命名、删除
- delete menu.createCatalog;
- delete menu.createPage;
- }
- return menu;
-
- }
- },
- types : {
- root : {
- icon : "fa fa-home",
- valid_children : ["catalog","page"]
- },
- catalog : {
- icon : "fa fa-folder-open",
- valid_children : ["catalog","page"]
- },
- page : {
- icon : "fa fa-file-o",
- valid_children : []
- }
- },
- plugins : ["contextmenu", "dnd", "search","state", "types", "wholerow"]
- }).on("changed.jstree",function(e,d){
- // console.log(d)
- // if(d.node.children.length == 0 && d.node.original.type == "page"){
- // console.log(d.node.id)
- // }
- });