J'ai un jstree que j'ai créé avec le code suivant:
$('#mytree').jstree({"core": { "data" : value
, "themes" : { "dots": false
, "icons": false }
}
}
);
Je peux le reconstruire avec de nouvelles données avec ce code:
$('#mytree').jstree(true).settings.core.data = new_data;
$('#mytree').jstree(true).refresh();
mais cela peut coûter cher quand vous avez beaucoup de nœuds. Ce que j'aimerais réaliser, c'est que je souhaite mettre à jour la valeur des éléments (c'est-à-dire la partie node.text
) sans reconstruire l'arbre entier. Je reçois les nouvelles valeurs via websocket dans un message (la chaîne JSON complète qui sera le new_data
) mais la structure ne change pas. Comment puis je faire ça? Je vous remercie!
Ce dont vous avez besoin n’est pas refresh()
mais redraw()
et le code est
$('#mytree').jstree(true).settings.core.data = new_data;
$('#mytree').jstree(true).redraw(true);
Vous pouvez trouver les fonctions dans l'API jstree .
Selon la suggestion de zmirc, dans v3.1, utilisez:
$('#mytree').jstree(true).settings.core.data = new_data;
$('#mytree').jstree(true).refresh();
pour supprimer le noeud et recharger l'arborescence
$('#mytree').jstree(true).refresh();
pour ceux qui ont besoin de redessiner sans redémarrer l'utilisation de l'arbre
jQuery('#data').jstree(true).refresh(true);
$ ('# mytree'). jstree (true) .refresh (); fonctionne, mais dans mon cas, cela provoque une fuite de thread . chaque rafraîchissement ajoute un thread supplémentaire
Vous pouvez actualiser le noeud par ceci
$('#treeView').jstree(true).refresh_node("node_id_here")