2013-07-12 24 views
10

tôi có kế hoạch sử dụng jsTree để hình dung cây như cấu trúc và tôi muốn để đạt được các hành vi sau đây:jsTree: Làm thế nào để mở rộng tất cả các nút trên hình dung đầu tiên và sau đó lưu và khôi phục trạng thái với plugin 'cookie'

  • đúng giờ hình dung đầu tiên tôi muốn có tất cả các nút mở rộng
  • bất kỳ visualizations liên tiếp sẽ khôi phục lại trạng thái trước đó của cấu trúc cây sử dụng các "cookie" plugin

ràng buộc:

  • tôi sử dụng đối tượng json để cư cây
  • Tôi không thể sử dụng 'initially_open' thuộc tính liệt kê ID cho trực quan đầu tiên bởi vì nó sẽ rất khó để xác định các ID ban đầu

Trong khác từ tôi muốn đạt được điều gì đó tương tự như a) thay đổi trạng thái mặc định của nút thành 'mở' hoặc b) xác định xem đây có phải là hình ảnh đầu tiên (có thể bằng cách kiểm tra thuộc tính plugin 'cookie' nếu chúng ta không có trạng thái tồn tại) và nếu vậy thì hãy gọi 'open_all'

Ý tưởng được đánh giá cao. Cảm ơn!

+0

là một trong những câu trả lời hữu ích cho bạn? Nếu có, vui lòng đánh dấu nó là câu trả lời. Điều đó cũng sẽ cung cấp cho bạn một số tín dụng danh tiếng. – Matt

Trả lời

5

Mở rộng tất cả các nút, chỉ cần sử dụng

$("#treeView").jstree("open_all"); 

Bạn có thể bao gồm nó trong tải ban đầu, như vậy

$('#treeView').jstree(
{ 
    "themes": { 
     "theme": "default", 
     "dots": false, 
     "icons": false 
    }, 
    "plugins": ["themes", "html_data", "checkbox", "ui"] 
}).jstree("set_theme", "apple") 
.bind("loaded.jstree", function (event, data) { 
    $(this).jstree("open_all"); 
}); 

Tương tự như vậy, nếu bạn muốn kiểm tra tất cả các yếu tố, sử dụng

$(this).jstree("check_all"); 

Về cookie, tôi chưa sử dụng, nhưng có một plugin có tên là jquery.cookie.js. Tôi cho rằng nó chứa các phương thức để tải/lưu dữ liệu từ/vào một cookie. Bạn có để ràng buộc sự kiện khác, chẳng hạn như

.bind("change_state.jstree", function (evt, data) { ... }); 

để nắm bắt những thay đổi trạng thái và tải ban đầu trong trường hợp loaded.jstree sẽ đọc từ cookie. Vui lòng xem this link để đọc thêm về xử lý cookie, cả hai đều được đề cập - cách bạn có thể sử dụng nó có hoặc không có plugin này.

3

câu trả lời của Matt là tất cả tốt, nhưng như jstree v3 là có liên quan sử dụng sự kiện ready.jstree thay vào đó, nên câu chuyện dài ngắn:

$('#treeView').jstree(treeOptions) 
.bind("ready.jstree", function (event, data) { 
    $(this).jstree("open_all"); 
}); 
+2

"loaded.jstree" phải là "ready.jstree" trong câu trả lời của bạn? – BigJ

+0

yeap, tôi nghĩ về sẵn sàng và đã viết được nạp thay vào đó, cảm ơn :) – mikus

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