让Dynatree的节点以惰性模式加载,有没有办法告诉他节点是父节点被“懒惰”加载之前的父节点?
jQuery(document).ready(function() {
jQuery("#tree").dynatree({
width:300,
title: "Lazy Tree",
keyboard: true,
persist: true,
autoCollapse: true,
clickFolderMode: 3,
fx: {height: "toggle", duration:300},
initAjax: {
type: 'POST',
url: 'treeNodes.php',
dataType: 'json',
data: {key: 0},
},
onActivate: function(node) {
node.toggleExpand();
// Do this and that when some label is clicked
},
onLazyRead: function (node) {
node.appendAjax({
type: 'POST',
url: "treeNodes.php",
dataType: 'json',
data: {key: node.data.key}
});
}
});
});
在treeNodes.php中的MySQL请求加载节点:
if ($parent==0) { // Load first level nodes
$req = "SELECT name AS title, id AS 'key', isparent AS isLazy FROM `".$database['database']."`.`".$database['prefix']."categories` WHERE parent=0";
} else { // Load sub-nodes from the given parent
$req = "SELECT name AS title, id AS 'key', isparent AS isLazy FROM `".$database['prefix']."categories` WHERE parent=".$_POST['key'];
}
isparent
列存储节点是否为父节点。
使用它将isLazy设置为1或0会告诉树显示可扩展节点。但是节点会显示“未知状态”(蓝色菱形图标),直到被点击为止。
我正在寻找与“isParent”节点参数等效的东西,因此一旦显示,每个节点都带有一个[+]符号,如果它有子节点而没有其他符号。
答案 0 :(得分:0)
"isLazy": false
,这样就不会显示任何扩展器图标。[+]
。"isLazy": true
,这样就会显示[*]
。这表示用户可以在展开时加载更多节点
当然,您可以使用自定义CSS将图标覆盖为[+]
。 P.S。
请注意,不再主动维护DynaTree。我建议切换到Fancytree。