我一直在我正在从事的项目中使用“Fancytree”,直到今天我都对它非常满意。我需要在树中的某些节点上显示不同的图标,并且到目前为止,还无法让它们出现在树上。
我在我用来加载树的 JSON 字符串中指定了自定义节点图标:
[{
"title": "Inventory",
"key": "DocFolders/1026",
"folder": true,
"data": {
"icon": "LockedFolder.gif",
"isLocked": true
}
}, {
"title": "Telemetry",
"key": "DocFolders/1027",
"folder": true,
"data": {
"icon": "LockedFolder.gif",
"isLocked": true
}
}, {
"title": "Well Documents",
"key": "DocFolders/1028",
"folder": true,
"data": {
"icon": "LockedFolder.gif",
"isLocked": true
},
"expanded": true,
"children": [{
"title": "4-13 Spectrum Core PG&E Data.xlsx",
"key": "SpectrumDocs/961"
}]
}, {
"title": "Well Photos",
"key": "DocFolders/1029",
"folder": true,
"data": {
"icon": "LockedFolder.gif",
"isLocked": true
}
}]
以下是加载树的 javascript 代码:
$('#locDocTree').fancytree({
source: fldrObj,
imagePath: 'skin-win8',
activate: function (event, data) {
if (data.node.folder) {
$('[id$=txtSelFldrKey]').val(data.node.key);
$('[id$=txtDownloadDocId]').val('');
}
else {
$('[id$=txtDownloadDocId]').val(data.node.key);
$('[id$=txtSelFldrKey]').val('');
}
}
});
“LockedFolder.gif”文件位于“skin-win8”文件夹中,如果我从 JSON 中取出“icon”:“LockedFolder.gif”,则树可以使用默认图像进行渲染。指定 icon 属性时,树仍然呈现,但没有文件夹图标的图像。
以下是页头中引用的脚本和 css 文件。
<link href="fancytree/skin-win8/ui.fancytree.css" rel="stylesheet" type="text/css">
<script src="Scripts/json2.js" type="text/javascript"></script>
<script src="Scripts/jquery-2.1.1.js" type="text/javascript"></script>
<script src="Scripts/jquery-ui-1.10.4.js" type="text/javascript"></script>
<script src="fancytree/jquery.fancytree.js" type="text/javascript"></script>
看起来这应该很简单,但结果对我来说是一个脑筋急转弯......
好吧,几个小时后,我已经设法回答了我自己的问题。感觉很傻,但这些事情经常归结为这样的事情。原来我的问题出在树的“imagePath”选项中。路径名称必须包含以下正斜杠。所以解决方法是让 imagePath 成为“skin-win8/”。之后工作正常。