jsTree는 각 페이지 리디렉션/재로드에서 트리의 상태를 저장해야하지만 일관되게 수행하지는 않습니다. 나무는 시간의 일부만 저장하는 것처럼 보입니다.jsTree가 잘못된 상태로로드 됨
내 나무는 항상 같은 페이지의 왼쪽 탐색 메뉴로 볼 같습니다
| Category 1
|
| Category 2
| ---Sub 2.1
|
| Category 3
| --- Sub 3.1
| --- Sub 3.2
| --- Sub 3.2.1
| --- Sub 3.2.2
우리가 나는 종류 3.2.2을 선택한 가정 해 봅시다. 이렇게하면 사용자가 리디렉션되고 페이지로드시 선택한 카테고리가 올바르게 강조 표시됩니다.
카테고리 1을 클릭하면 사용자가 다시 리디렉션되고 페이지로드가 완료되면 카테고리 1이 선택됩니다. 이것은 발생하지 않습니다. 대신 사용자는이 페이지로 이동하지만 Sub 3.2.2는 선택된 것으로 표시됩니다.
카테고리 3을 클릭하면이 카테고리가 올바르게 강조 표시됩니다. 클릭 및 리디렉션시 다른 노드 집합이 선택되지 않습니다. 여기
트리 초기화 방법은 다음과 같습니다
$(function() {
// Get categories from JSON server
$.getJSON('/getcategories', function(treedata) {
// Builds JSON data for the tree
var tree = menuRoot(treedata.categoryList);
$('#jsCategoryTree').jstree({
'core' : {'multiple' : false, 'data' : tree},
'state' : { 'key' : 'jsCategoryTree', 'events' : 'activate_node.jstree'},
'plugins' : ['state','cookies','ui','html_data'],
'cookies' : { cookie_options : { path : '/' } }
});
// Binds a link to each node to redirect user
$('#jsCategoryTree').on('activate_node.jstree', function(e, data) {
var categoryId = data.node.id;
location.href = '/?categoryId=' + categoryId;
});
});
})
내가 기본 이벤트뿐만 아니라와의 다양한 조합으로 초기화하는 것을 시도했다 : changed.jstree, open_node.jstree, close_node.jstree, enable_node .jstree, activate_node.jstree, select_node.jstree, set_state.jstree, refresh.jstree
나의 이해는 내가 노드 클릭 할 때마다 호출 activate_node.jstree, 따라서는 save_state 방법을 발사함으로써 재현해야한다는 것입니다 페이지를 다시로드/리다이렉트 할 때 올바른 선택.
이 문제의 원인은 무엇입니까?
이것은 카테고리 1에서 특별히 발생합니까, 아니면 완전히 무작위입니까? 특정 요소가 작동하는 방식에 일관성이 있다면 거기에 발견 할 수있는 패턴이있을 것입니다. – mechalynx
완전히 무작위로 보입니다. 때로는 카테고리 1을 선택한 다음 카테고리 3.2.1로 다시 전환하고 다시 돌아 가면 상태가 올바르게로드됩니다. 다른 경우에는 이것이 작동하지 않습니다. 페이지에 2 개의 jsTree가 있지만 다른 하나는 상태를 저장하거나 쿠키를 사용하지 않습니다. –