gpt4 book ai didi

fancytree - 如何对顶部有文件夹的fancytree节点进行排序

转载 作者:行者123 更新时间:2023-12-04 00:08:30 25 4
gpt4 key购买 nike

我已经查看了 fancytree 的文档和示例几个小时,像海绵一样吸收了 fancytree 的所有优点,但我似乎不知道如何使用 API 调用首先使用文件夹对我的 fancytree 对象进行排序。我最初通过安排我的初始 JSON 数据解决了这个问题,以便它已经在顶部的文件夹中排序(项目的要求)但现在我需要向树中添加一个新文件夹并且我需要重新排序确保新添加的文件夹与其他文件夹一起出现在树顶部的对象。

我注意到 sortChildren() 有一个奇怪的选项,它允许定义自定义比较函数,但我在思考如何使用它时遇到了麻烦。

任何想法将不胜感激!

下面是关于我目前是如何做事的片段(我正在用来自某些表单元素的数据填充新 child ):

//add the new foldername to the tree and re-order
var rootNode = jQuery("#document_objects").fancytree("getRootNode");
var childNode = rootNode.addChildren({
title: jQuery('#newfoldername').val(),
tooltip: jQuery('#description').val(),
folder: true
});

rootNode.sortChildren(null, true);

提前致谢!

最佳答案

sortChildren(cmp, deep) 允许传递一个比较函数: http://www.wwwendt.de/tech/fancytree/doc/jsdoc/FancytreeNode.html#sortChildren

默认实现(如果您为 cmp 参数传递 null 或不传递任何内容)是

函数(a,b){
var x = a.title.toLowerCase(),
y = b.title.toLowerCase();
返回 x === y ? 0 : x > y ? 1:-1;
};

但您可以添加一些前缀来强制使用不同的顺序,例如:

函数(a,b){
var x = (a.isFolder() ? "0": "1") + a.title.toLowerCase(),
y = (b.isFolder() ? "0": "1") + b.title.toLowerCase();
返回 x === y ? 0 : x > y ? 1:-1;
};

关于fancytree - 如何对顶部有文件夹的fancytree节点进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22581701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com