按标题对整个 fancytree 进行排序失败
Sorting whole fancytree by title fails
我的页面上有一个 js 代码,它从具有单独负载的服务器获取 JSON-hierarchy,并在页面上构建一个可视化的 Fancytree 层次结构(我从示例中删除了 html 页面部分)。
$(function() {
$("#tree").fancytree({
source: {
url: '/products/ftree/?format=json',
cache: false,
datatype: 'json',
},
checkbox: false,
})
sortProducts();
console.log('sorted');
});
function sortProducts(){
console.log('in sortProducts()');
var tree = $("#tree").fancytree("getTree");
tree.rootNode.sortChildren(null, true);
tree.visit( function(node) {
node.sortChildren(null, false);
return true;
});
tree.render(true, true);
console.log('end of sort func');
}
.
.
.
<div id='tree' ></div>
每个节点都有像
这样的标题
1 Fooo
2 Bar
3 FoooBar
3-1 BarFooo
3-1-1 foofoofoo
3-1-2 barbarbar
4 Buuu
4-1 BuuuBooo
4-1-1 bubobubub
等等。页面加载正常,它正确地呈现树并且大多数节点的顺序正确,但在较深的部分 4-2 出现在 4-1 之前,依此类推。所以我试着用 .sortChildren(null, true) 等等对它们进行排序,但它没有对它们进行排序。我整理了代码,它不会给出任何错误,并且可以很好地打印调试,但是树没有正确排序。
请注意,代码片段有两次尝试,通过 rootNode 和 node traverse,我单独和一起尝试过并得到相同的部分未排序的树。在我的理解中,sortChildren() 应该在不覆盖默认 cmp 函数的情况下对 title-strings 进行排序。
知道这有什么问题吗?
这段代码可以
var node = $("#tree").fancytree("getRootNode");
node.sortChildren(null, true);
但问题是你试图对空树进行排序,因为异步请求还没有返回。
一种解决方案是在 init
事件中调用它:
$("#tree").fancytree({
...
init: function(event, data) {
data.tree.getRootNode().sortChildren(null, true);
},
...
我的页面上有一个 js 代码,它从具有单独负载的服务器获取 JSON-hierarchy,并在页面上构建一个可视化的 Fancytree 层次结构(我从示例中删除了 html 页面部分)。
$(function() {
$("#tree").fancytree({
source: {
url: '/products/ftree/?format=json',
cache: false,
datatype: 'json',
},
checkbox: false,
})
sortProducts();
console.log('sorted');
});
function sortProducts(){
console.log('in sortProducts()');
var tree = $("#tree").fancytree("getTree");
tree.rootNode.sortChildren(null, true);
tree.visit( function(node) {
node.sortChildren(null, false);
return true;
});
tree.render(true, true);
console.log('end of sort func');
}
.
.
.
<div id='tree' ></div>
每个节点都有像
这样的标题 1 Fooo
2 Bar
3 FoooBar
3-1 BarFooo
3-1-1 foofoofoo
3-1-2 barbarbar
4 Buuu
4-1 BuuuBooo
4-1-1 bubobubub
等等。页面加载正常,它正确地呈现树并且大多数节点的顺序正确,但在较深的部分 4-2 出现在 4-1 之前,依此类推。所以我试着用 .sortChildren(null, true) 等等对它们进行排序,但它没有对它们进行排序。我整理了代码,它不会给出任何错误,并且可以很好地打印调试,但是树没有正确排序。
请注意,代码片段有两次尝试,通过 rootNode 和 node traverse,我单独和一起尝试过并得到相同的部分未排序的树。在我的理解中,sortChildren() 应该在不覆盖默认 cmp 函数的情况下对 title-strings 进行排序。
知道这有什么问题吗?
这段代码可以
var node = $("#tree").fancytree("getRootNode");
node.sortChildren(null, true);
但问题是你试图对空树进行排序,因为异步请求还没有返回。
一种解决方案是在 init
事件中调用它:
$("#tree").fancytree({
...
init: function(event, data) {
data.tree.getRootNode().sortChildren(null, true);
},
...