2013-02-19 41 views
6

Tôi đang viết một phần mở rộng Chrome cho Delicious dấu trang. Tệp background.js của tôi tìm nạp các dấu trang trên trình duyệt đang mở và tạo đối tượng cần thiết cho jsTree để xây dựng một cây thích hợp.jsTree chức năng sắp xếp ridiculously chậm

Nếu tôi tắt plugin sắp xếp của jsTree, dấu trang xuất hiện ngay lập tức khi tôi nhấp vào cửa sổ bật lên. Nếu tôi bật chức năng sắp xếp thì có sự chậm trễ ~ 2 giây giữa lần nhấp và hiển thị dữ liệu.

Tôi đã thử sắp xếp trước tất cả dữ liệu của mình trong tập lệnh nền và chuyển nó đến cửa sổ bật lên được sắp xếp trước, nhưng jsTree không tôn trọng dữ liệu được sắp xếp này.

Tôi chỉ có ~ 90 thẻ và ~ 400 dấu trang. Có một tùy chọn cấu hình tôi có thể sử dụng để làm cho điều này nhanh hơn? Đây là những gì jsTree của tôi trông giống như.

$('#jstree').jstree({ 
    'close_all': -1, 
    'core': { 
     'animation': 0 
    }, 
     'json_data': { 
     'async': true, 
     'data': data 
    }, 

    'progressive_render': true, 
    'themes': { 
     'theme': 'classic', 
     'dots': false, 
     'icons': true 
    }, 

    'sort': function (a, b) { 
     return this.get_text(a) > this.get_text(b) ? 1 : -1; 
    }, 

    'types': { 
     'valid_children': [ 'folder' ], 
     'types': { 
      'folder': { 
       'valid_children': [ 'file' ], 
       'max_depth': 1 
      }, 
     } 
    }, 

    'plugins': [ 
     'json_data', 
     'themes', 
     'sort', 
     'types', 
    ] 
}); 
+0

Chỉ cần một bình luận: Tôi không biết tại sao máy của bạn chậm, nhưng tôi đang chạy jstree với một cuộc gọi phía máy chủ đi qua một thư mục đệ quy - ít nhất 300 tệp và trả về html - và sau đó tôi lặp lại tất cả html với '$ .each' và nó trả về sau chưa đầy một giây. Vấn đề của tôi là vấn đề có thể nằm ở nơi khác. – user1167442

+0

Thay vì thêm các tùy chọn khác, hãy thử tắt từng tùy chọn bạn có thể, chỉ để xem tùy chọn đó có nhanh hơn không ... ví dụ: hãy thử tắt chức năng sắp xếp, vì bạn đã sắp xếp trước nó ... –

+0

'' this.get_text'' là gì? có lẽ đó là chức năng đắt tiền? – mitchfuku

Trả lời

2

jsTree sử dụng có nguồn gốc phương pháp mảng sort, do đó, điều duy nhất có thể được cải thiện là các cuộc gọi đến get_text, nhưng tôi nghi ngờ rằng có thể nhận được nhanh hơn nhiều.

Nếu bạn đã sắp xếp dữ liệu của mình - chỉ cần xóa plugin sắp xếp khỏi mảng cấu hình plugins. Không có cách nào để plugin sắp xếp "biết" rằng dữ liệu đã được sắp xếp, chỉ cần xóa plugin.

Các vấn đề liên quan