ejemplos - Cómo actualizar los valores del nodo jstree sin recargar
jstree options (5)
Tengo un jstree que creé con el siguiente código:
$(''#mytree'').jstree({"core": { "data" : value
, "themes" : { "dots": false
, "icons": false }
}
}
);
Puedo reconstruirlo con nuevos datos por este código:
$(''#mytree'').jstree(true).settings.core.data = new_data;
$(''#mytree'').jstree(true).refresh();
pero puede ser costoso cuando tienes muchos nodos. Lo que me gustaría lograr es que me gustaría actualizar el valor de los elementos (es decir, la parte node.text
) sin reconstruir todo el árbol. Obtengo los nuevos valores a través de websocket en un mensaje (la cadena JSON completa que será el new_data
) pero la estructura no está cambiando. ¿Cómo puedo hacer eso? ¡Gracias!
$ (''# mytree''). jstree (true) .refresh (); está funcionando, pero en mi caso provoca una pérdida de hilo. cada actualización agrega un hilo más
Cargo datos a través de una url, por lo que mi parte de actualización se ve así:
$(''#groupTree'').jstree(true).settings.core.data.url = get_group_url();
Lo que necesita no es refresh()
sino redraw()
tanto, el código es
$(''#mytree'').jstree(true).settings.core.data = new_data;
$(''#mytree'').jstree(true).redraw(true);
Puedes encontrar las funciones en la API de jstree .
Según la sugerencia de zmirc, en v3.1 use:
$(''#mytree'').jstree(true).settings.core.data = new_data;
$(''#mytree'').jstree(true).refresh();
Puede actualizar el nodo por este
$(''#treeView'').jstree(true).refresh_node("node_id_here")
para borrar el nodo y recargar árbol
$(''#mytree'').jstree(true).refresh();
Para aquellos que necesitan volver a dibujar sin reiniciar el uso del árbol.
jQuery(''#data'').jstree(true).refresh(true);