我正在创建一个jsTree实例,它显示了文件服务器的目录列表。我很难将jsTree的“子文件夹”或“子目录”节点显示为可打开的。
虽然文件夹节点的JSON state
为closed
,但jsTree的显示不会显示该节点的打开/关闭三角形。
以下是我#fileTree
的初始配置:
$("#fileTree")
.jstree({
"core" : {
"initially_open" : [ "root" ] ,
"html_titles" : false
},
"json_data" : {
"progressive_render" : true,
"data" : [
{
"data" : { title : "/home/" + username },
"attr" : {
"id" : "/home/" + username,
"rel" : "root",
"href" : "file://home/" + username
},
"icon" : "/js/_demo/home.png",
"state" : "closed"
}
],
"ajax" : {
"url" : "/services/listDirectoryContents.pl",
"data" : function (n) {
return { id : n.attr ? n.attr("id") : "/home/" + username };
}
}
},
"themes": {
"theme": "default",
"dots": true,
"icons": true,
"url": "/js/themes/default/style.css"
},
"plugins" : [ "core", "themes", "json_data" ]
});
从/services/listDirectoryContents.pl
子区调用的ajax
脚本是一个近RESTful脚本,它将路径作为查询参数(节点的id
中的任何内容)。
该服务以JSON格式(maxdepth
为1)输出一系列目录和文件,以及jsTree使用的显示属性。
以下是此服务的示例输出,使用/home/areynolds
作为根节点:
$ ./listDirectoryContents.pl /home/areynolds
Status: 200 OK
Content-Type: text/html; charset=ISO-8859-1
[
{
"data" : {
"icon" : "/js/_demo/folder.png",
"title" : "projects",
"attr" : {
"rel" : "folder",
"href" : "file:///home/areynolds/projects",
"id" : "/home/areynolds/projects"
},
"state" : "closed"
}
},
{
"data" : {
"icon" : "/js/_demo/folder.png",
"title" : "proj",
"attr" : {
"rel" : "folder",
"href" : "file:///home/areynolds/proj",
"id" : "/home/areynolds/proj"
},
"state" : "closed"
}
},
...
{
"data" : {
"icon" : "/js/_demo/file.png",
"title" : "test.bed",
"attr" : {
"rel" : "file",
"href" : "file:///home/areynolds/test.bed"
}
}
}
]
在我的网页上,根节点(例如/home/areynolds
)最初关闭 - 有趣的是,尽管有core
插件的initially_open
指令:
当我打开根节点时,我看到根节点下面的文件夹和文件列表:
显示文件夹和文件的正确icon
和title
数据。
但是,每个文件夹旁边没有打开/关闭显示三角形。 (当打开时,理论上,这将触发对打开的子目录的文件夹和文件列表的Ajax调用。)
我在JSON输出或初始$("#fileTree").jstree()
设置中如何配置错误,以防止显示打开/关闭三角形?
感谢您的建议!
答案 0 :(得分:0)
attr
属性的位置似乎决定了jsTree的成败。以下是可正常工作的文件夹节点的示例:
[
...
{
"data" : {
"icon" : "/js/_demo/folder.png",
"title" : "workspace",
"attr" : {
"href" : "file:///home/areynolds/workspace"
}
},
"attr" : {
"rel" : "folder",
"id" : "/home/areynolds/workspace"
},
"state" : "closed"
}
...
]