example javascript jquery contextmenu jstree

javascript - example - jsTree y menú contextual: modificar elementos



jstree example (5)

Estoy usando jsTree 3.0.0 y necesito modificar el contexto de una de las siguientes maneras:

  • Cambie el idioma de la etiqueta para los elementos predeterminados, desactive algunos elementos predeterminados y agregue nuevos elementos.
  • Reescriba todos los elementos y enlace a algunos elementos nuevos la función crear, renombrar y eliminar.

Probé varios enfoques pero nada funcionó. Por ejemplo, esto devuelve Uncaught TypeError: Object [object global] has no method ''create'' cuando hago clic en create.

"contextmenu":{ "items": function($node) { return { createItem : { "label" : "Create New Branch", "action" : function(obj) { this.create(obj); alert(obj.text())}, "_class" : "class" }, renameItem : { "label" : "Rename Branch", "action" : function(obj) { this.rename(obj);} }, deleteItem : { "label" : "Remove Branch", "action" : function(obj) { this.remove(obj); } } }; } },

Si intento agregar un elemento como en el siguiente ejemplo, pierdo los elementos de menú predeterminados:

items : { "create_folder" : { "separator_before" : false, "separator_after" : false, "label" : "Create Folder", "action" : function (obj) { alert(1); /* this is the tree, obj is the node */ } } }

Donde me equivoco


Código actualizado para la última versión.

"contextmenu":{ "items": function($node) { var tree = $("#tree").jstree(true); return { "Create": { "separator_before": false, "separator_after": false, "label": "Create", "action": function (obj) { $node = tree.jstree(''create_node'', $node); tree.jstree(''edit'', $node); } }, "Rename": { "separator_before": false, "separator_after": false, "label": "Rename", "action": function (obj) { tree.jstree(''edit'', $node); } }, "Remove": { "separator_before": false, "separator_after": false, "label": "Remove", "action": function (obj) { tree.jstree(''delete_node'', $node); } } }; } }


Ejemplo más legible

var tree = $(''#treeDiv'').jstree({ "plugins": ["contextmenu"], "contextmenu": { "items": function ($node) { return { "create": { "separator_before": false, "separator_after": false, "label": "Create", "action": function (obj) { // action code here } } }; } } });


Resuelto:

"contextmenu":{ "items": function($node) { var tree = $("#tree").jstree(true); return { "Create": { "separator_before": false, "separator_after": false, "label": "Create", "action": function (obj) { $node = tree.create_node($node); tree.edit($node); } }, "Rename": { "separator_before": false, "separator_after": false, "label": "Rename", "action": function (obj) { tree.edit($node); } }, "Remove": { "separator_before": false, "separator_after": false, "label": "Remove", "action": function (obj) { tree.delete_node($node); } } }; } }


para jstree v3. + (i prueba 3.2.1) este ejemplo funciona

"contextmenu":{ "items": function () { return { "Create": { "label": "Create", "action": function (data) { var ref = $.jstree.reference(data.reference); sel = ref.get_selected(); if(!sel.length) { return false; } sel = sel[0]; sel = ref.create_node(sel, {"type":"file"}); if(sel) { ref.edit(sel); } } }, "Rename": { "label": "Rename", "action": function (data) { var inst = $.jstree.reference(data.reference); obj = inst.get_node(data.reference); inst.edit(obj); } }, "Delete": { "label": "Delete", "action": function (data) { var ref = $.jstree.reference(data.reference), sel = ref.get_selected(); if(!sel.length) { return false; } ref.delete_node(sel); } } }; } },


"contextmenu": { "items": function ($node) { var tree = $("#tree").jstree(true); return { "Create": { "separator_before": false, "separator_after": true, "label": "Create", "action": false, "submenu": { "File": { "seperator_before": false, "seperator_after": false, "label": "File", action: function (obj) { $node = tree.create_node($node, { text: ''New File'', type: ''file'', icon: ''glyphicon glyphicon-file'' }); tree.deselect_all(); tree.select_node($node); } }, "Folder": { "seperator_before": false, "seperator_after": false, "label": "Folder", action: function (obj) { $node = tree.create_node($node, { text: ''New Folder'', type: ''default'' }); tree.deselect_all(); tree.select_node($node); } } } }, "Rename": { "separator_before": false, "separator_after": false, "label": "Rename", "action": function (obj) { tree.edit($node); } }, "Remove": { "separator_before": false, "separator_after": false, "label": "Remove", "action": function (obj) { tree.delete_node($node); } } } } }