Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery jstree上下文菜单不工作_Jquery_Jstree - Fatal编程技术网

Jquery jstree上下文菜单不工作

Jquery jstree上下文菜单不工作,jquery,jstree,Jquery,Jstree,我正在用ajax延迟加载加载jstree,并且我已经实现了jstree的上下文菜单插件。因此,当单击上下文菜单时,将错误显示为 未捕获的TypeError:无法读取null的属性“get_node” jstree似乎没有完全加载,正在尝试使用上下文菜单 加载jstree后如何使用上下文菜单的任何建议 编辑:下面是我用来加载jstree的代码段 loadTree: function() { $j('#JSTree').jstree({ 'core' : {

我正在用ajax延迟加载加载jstree,并且我已经实现了jstree的上下文菜单插件。因此,当单击上下文菜单时,将错误显示为

未捕获的TypeError:无法读取null的属性“get_node”

jstree似乎没有完全加载,正在尝试使用上下文菜单

加载jstree后如何使用上下文菜单的任何建议

编辑:下面是我用来加载jstree的代码段

loadTree: function() {
     $j('#JSTree').jstree({
         'core' : {
             check_callback : true,
             data : function(obj, cb) {
                 var path = this.get_path(obj,'/') || '/';
                 ecpmServices.getTreeNode(path).then(function(response){
                       var treeData = response.data;
                       if(typeof treeData === 'object') {
                              treeData = parseTree(treeData, obj);
                              console.log(treeData);
                              cb.call(this,treeData);
                       }
                 });
             }
         },
         "contextmenu" : {
             items : function(node) {
                 var tmp = $j.jstree.defaults.contextmenu.items();
                 delete tmp.create.action;
                 delete tmp.rename;
                 delete tmp.ccp;
                 tmp.create.label = "New";
                 tmp.create.submenu = {
                     create_folder: {
                         label: "Folder",
                         separator_after: true,
                         action: function (data) {
                             var inst = $j.jstree.reference(data.reference);
                             console.log(data.reference);
                                var obj = inst.get_node(data.reference);
                                 inst.create_node(obj, { type : "folder", text : "New folder" }, "last", function (new_node) {
                                 setTimeout(function () { inst.edit(new_node); },0);
                             });
                         }
                     },
                     create_file : {
                         label: "File",
                         action: function (data) {
                             var inst = $j.jstree.reference(data.reference),
                             obj = inst.get_node(data.reference);
                             inst.create_node(obj, { type : "file", text : "New file" }, "last", function (new_node) {
                                 setTimeout(function () { inst.edit(new_node); },0);
                             });
                         }
                     }
                 };
                 if(this.get_type(node) === "file") {
                     delete tmp.create;
                 }
                 return tmp;
             }
         },
         "plugins" : ["contextmenu"]
     });
 };

提前感谢

您可以在收到树数据后加载树。如下

<script type="text/javascript">
    $(function () {
       //Call your ecpmServices.getTreeNode(path).then(function(response){
       //var treeData = response.data;   
       // if success then call loadTree(treeData) with treeData
       // if failure handle it                       
    });
</script>

您可以从

显示加载ccode的人那里得到提示
 loadTree: function(treeData) {
 $('#JSTree').jstree({
     'core' : {
         check_callback : true,
         data : treeData             
     },
     "contextmenu" : {
         items : function(node) {
             var tmp = $j.jstree.defaults.contextmenu.items();
             delete tmp.create.action;
             delete tmp.rename;
             delete tmp.ccp;
             tmp.create.label = "New";
             tmp.create.submenu = {
                 create_folder: {
                     label: "Folder",
                     separator_after: true,
                     action: function (data) {
                         var inst = $j.jstree.reference(data.reference);
                         console.log(data.reference);
                            var obj = inst.get_node(data.reference);
                             inst.create_node(obj, { type : "folder", text : "New folder" }, "last", function (new_node) {
                             setTimeout(function () { inst.edit(new_node); },0);
                         });
                     }
                 },
                 create_file : {
                     label: "File",
                     action: function (data) {
                         var inst = $j.jstree.reference(data.reference),
                         obj = inst.get_node(data.reference);
                         inst.create_node(obj, { type : "file", text : "New file" }, "last", function (new_node) {
                             setTimeout(function () { inst.edit(new_node); },0);
                         });
                     }
                 }
             };
             if(this.get_type(node) === "file") {
                 delete tmp.create;
             }
             return tmp;
         }
     },
     "plugins" : ["contextmenu"]
 });
};