Javascript jsTree自定义上下文菜单未根据文件夹/文件类型进行筛选
我正在尝试为jsTree配置自定义上下文菜单。我希望文件有两个选项[重命名,删除],文件夹有一个选项[创建] 下面的代码似乎正确,如下所述: 然而,这似乎不起作用,有两个问题Javascript jsTree自定义上下文菜单未根据文件夹/文件类型进行筛选,javascript,jstree,Javascript,Jstree,我正在尝试为jsTree配置自定义上下文菜单。我希望文件有两个选项[重命名,删除],文件夹有一个选项[创建] 下面的代码似乎正确,如下所述: 然而,这似乎不起作用,有两个问题 两个上下文菜单都显示选项[重命名、删除] 任选其一 导致错误的原因:未捕获类型错误:未定义不是函数 我做错了什么? 编辑:这里有一个 好的,所以答案是jstree不会隐式区分文件和文件夹。如果要进行区分,需要添加标识符和自定义逻辑 为了实现这一点,我向每个数据对象添加了以下内容 "data" : { "file" : t
好的,所以答案是jstree不会隐式区分文件和文件夹。如果要进行区分,需要添加标识符和自定义逻辑 为了实现这一点,我向每个数据对象添加了以下内容
"data" : { "file" : true }
于是,定制逻辑变得更加复杂
if (node.data.file) {
delete items.createItem;
}
else{
delete items.deleteItem;
delete items.renameItem;
}
此外,我执行自定义操作的方式是错误的。我通过查看jstree()的源代码发现了这一点。要启用创建和删除,必须设置“检查回调”:true。例如,您可以实现如下创建操作
createItem: { // The "create" menu item
label: "Create",
action: function (data) {
var inst = $.jstree.reference(data.reference),
obj = inst.get_node(data.reference);
inst.create_node(obj, {}, "last", function (new_node) {
new_node.data = {file: true};
setTimeout(function () { inst.edit(new_node); },0);
});
}
},
在这里工作
createItem: { // The "create" menu item
label: "Create",
action: function (data) {
var inst = $.jstree.reference(data.reference),
obj = inst.get_node(data.reference);
inst.create_node(obj, {}, "last", function (new_node) {
new_node.data = {file: true};
setTimeout(function () { inst.edit(new_node); },0);
});
}
},