Tôi đang cố gắng tự động tải các nút của một jtree khi chúng được mở rộng. Tài liệu nhỏ tôi tìm thấy là vào cuối this page.Tải trọng lười biếng với jsTree
Tôi đã tìm thấy một số giải pháp tạo từng nút một với vòng lặp như this one. Tôi đã không thử nó, nhưng nhìn vào trang tài liệu tôi có cảm giác rằng jstree nên chăm sóc đi xe đạp qua các nút.
Tôi đã tìm thấy nhiều giải pháp sử dụng plugins: ["json_data"]
, nhưng plugins documentation page không đề cập đến plugin đó chút nào. Đó có phải là một plugin cũ không cần thiết nữa không?
thực hiện hiện tại của tôi sử dụng mã này để tải toàn bộ cây trong một shot:
$.ajax({
var pn = $('#project_number').val();
url : "bomtree?part=" + pn,
success : function(tree_content) {
var data = $.parseJSON(tree_content);
var config = {
'core' : {
'data' : data
}
};
$('#bom_tree').jstree(config);
}
});
tôi sửa đổi mã trên trang tài liệu như thế này:
$(function() {
var pn = $('#project_number').val();
$('#tree').jstree({
'core' : {
'data' : {
'url' : function(node) {
return '/doc/test2';
},
'data' : function(node) {
return {
'part' : node.id === '#' ? pn : node.id
};
}
}
}
});
});
Văn bản json cùng làm việc với mã đầu tiên, bây giờ với mã thứ hai. Tài liệu nói The format remains the same as the above
, vì vậy tôi đã không thay đổi nó.
tôi đã cố gắng cũng trả lại dữ liệu tương tự như trong ví dụ này, này:
[
{ "id" : "ajson1", "parent" : "#", "text" : "Simple root node" },
{ "id" : "ajson2", "parent" : "#", "text" : "Root node 2" },
{ "id" : "ajson3", "parent" : "ajson2", "text" : "Child 1" },
{ "id" : "ajson4", "parent" : "ajson2", "text" : "Child 2" },
]
Nhưng kết quả là như nhau: ném jquery một Sizzle.error tại dòng sau:
Sizzle.error = function(msg) {
throw new Error("Syntax error, unrecognized expression: " + msg);
};
Trường hợp nội dung của msg
là dữ liệu json được máy chủ trả về.
Có vấn đề gì?
Tính đến thời điểm jsTree 3.3.5, bạn ~ có thể ~ sử dụng cùng một URL và vẫn tải chậm. Câu trả lời của André Bonna dưới đây cho thấy rằng thiết lập 'node.children = true' trong thuộc tính' 'success'' sẽ khiến jsTree sử dụng tải chậm và gọi cùng một URL mỗi khi một nút được mở rộng. Nếu chỉ một URL được chỉ định, nó sẽ là URL được sử dụng. – barrypicker