dijit.tree ¿cómo implementar un colapso toda la funcionalidad usando solo la tienda?

Tengo un dijit.tree de carga diferido que quiero reutilizar en muchos lugares después de que se hayan cargado sus datos. Pero si simplemente reemplazo el objeto de la tienda en los otros árboles por el que contiene la mayoría de los datos, los nodos se expanden por completo. Quiero modificar la tienda para que todos los artículos se contraigan antes de configurarlo como una tienda en el nuevo árbol. ¿Puedes decirme cómo lograr esto?

0

1 Respuestas

You cannot use the store for this, as it does not contain any information of the state of the tree nodes. This 'magic' is performed via TreeNode, see some examples here

La 'solución perfecta' sería averiguar qué rutas necesita expandir y luego establecer la ruta de su árbol para atravesar los treenodes deseados.

However, since your lazyloading, you need to check the state - while initializing a tree it should be UNCHECKED. However there is a cookie-functionality inbuilt which probably is kicking in, make sure to create new tree's with { persist:false }

You could also extend your tree, so that it will accept collapseChildren(TreeNode) as follows - and then call tree.set("path", [pathsArray]);

collapseChildren : function(top) {
        var self = this;
        if(!top || !self.model.mayHaveChildren(top.item)) return;
        top.getChildren().forEach(function(n) {
                if(n.item.children) {
                        //dojo.style(n.getParent().containerNode, { overflowY: 'hidden', overflowX: 'hidden'});
                        self._collapseNode(n);
                        self.collapseChildren(n);
                }
        });
},

EDITAR:

Si el indicador autoExpand se pasa al constructor, el Árbol se muestra inicialmente con todos los nodos expandidos.

     

Luego puede llamar a collapseAll() y expandir All() para contraer y expandir el árbol, respectivamente.    http://livedocs.dojotoolkit.org/dijit/Tree-examples#id3

0
agregado
mira, el problema es que cuando configuro solo la tienda del árbol viejo como almacén del árbol nuevo, veo que los nodos se expandieron exactamente como estaban en el árbol anterior. Así que creo que está basado en la tienda.
agregado el autor MozenRath, fuente
disparan xhr solo si el niño no está ya poblado
agregado el autor MozenRath, fuente
Gracias a Ton @mschr!
agregado el autor MozenRath, fuente
intenté usar persistir: falso como se dijo anteriormente? Los clics en un árbol generan una cookie para almacenar rutas de árbol entre las cargas de página, pensando que podría ser lo mismo aquí. ¿Su árbol recién creado dispara XHR en los contenedores hijos 'abiertos'?
agregado el autor mschr, fuente
asegúrese de que el indicador autoExpand sea falso, luego use tree.set ("ruta", [pathsArray]); para abrir los que desee abrir
agregado el autor mschr, fuente
JavaScript - Comunidad española
JavaScript - Comunidad española
4 de los participantes

En este grupo hablamos de JavaScript. Partner: es.switch-case.com