web-dev-qa-db-ja.com

新しいデータでjstreeツリーを再描画する方法は?

それで、私の質問。私はいくつかのデータでツリーを初期化しました:

$('#tree').jstree({
    'core' : {
        'data' : [
            'Simple root node',
            {
                'id' : 'node_2',
                'text' : 'Root node with options',
                'state' : { 'opened' : true, 'selected' : true },
                'children' : [ { 'text' : 'Child 1' }, 'Child 2']
            }
        ]
    });

しかし、いくつかのアクションの後、新しいデータでツリーを再描画したいと思います。 APIのrefreshおよびredrawメソッドを使用しようとしましたが、失敗しました。

ツリーを更新する方法を教えてもらえますか?

22
user2680139

バージョン3では、ツリーをリロードできます。

$('#treeId').jstree(true).settings.core.data = newData;
$('#treeId').jstree(true).refresh();
14
faxiubite

refresh()はツリーを初期状態に更新します。つまり、新しく作成されたノードは削除されます

欲しいのはredraw(true)です

8
user3926752

コア設定にcheck_callbackパラメーターを含めて(初期ロードを含む)、trueに設定されていることを確認してください。その後、変更内容を確認できるはずです。これがないと、置換データは表示されず、元のデータだけが表示されます。

_$('#tree').jstree({
'core' : {
    'check_callback' : true,
    'data' : [
        'Simple root node',
        {
            'id' : 'node_2',
            'text' : 'Root node with options',
            'state' : { 'opened' : true, 'selected' : true },
            'children' : [ { 'text' : 'Child 1' }, 'Child 2']
        }
    ]
});
_

それは私のためにリフレッシュ部分を処理しましたが、あなたがしていることに応じて、あなたは$('#tree').jstree('refresh');を呼び出すこともできます。

6
Neil Cresswell