web-dev-qa-db-ja.com

リロードせずにjstreeノード値を更新する方法

次のコードで作成したjstreeがあります。

$('#mytree').jstree({"core": { "data" : value
                             , "themes" : { "dots": false
                                          , "icons": false }
                             }
                    }
                   );

このコードにより、新しいデータで再構築できます。

$('#mytree').jstree(true).settings.core.data = new_data;
$('#mytree').jstree(true).refresh();

しかし、多くのノードがある場合は高価になる可能性があります。私が達成したいのは、要素の値を更新することです(つまり、node.text part)ツリー全体を再構築せずに。 1つのメッセージで_websocketを介して新しい値を取得します(new_data)しかし、構造は変化していません。どうやってやるの?ありがとうございました!

16
Gabor Meszaros

必要なのはrefresh()ではなくredraw()なので、コードは

$('#mytree').jstree(true).settings.core.data = new_data;
$('#mytree').jstree(true).redraw(true);

関数は jstree API にあります。

Zmircの提案に従って、v3.1では次を使用します。

$('#mytree').jstree(true).settings.core.data = new_data;
$('#mytree').jstree(true).refresh();
21
Gabor Meszaros

ノードを削除してツリーをリロードする

 $('#mytree').jstree(true).refresh();

ツリーを再起動せずに再描画する必要がある人向け

jQuery('#data').jstree(true).refresh(true);
2
baaroz

URL経由でデータをロードするため、更新部分は次のようになります。

$('#groupTree').jstree(true).settings.core.data.url = get_group_url();
0
cwhisperer

$( '#mytree')。jstree(true).refresh();動作していますが、私の場合はスレッドリークが発生します。更新するたびにスレッドが1つ追加されます

0
Shlomi Aharoni

これでノードを更新できます

$('#treeView').jstree(true).refresh_node("node_id_here")
0
Atif