tutorial español curso famo.us

famo.us - curso - tutorial qgis 2.18 español pdf



¿Cómo eliminar nodos del Árbol de Render? (1)

Nunca eliminas los Nodos de representación: usas Nodos de Representación inteligentes para manipular lo que se representa.

La solución depende de lo que quieras lograr:

1) Quiero manipular el diseño.

La forma más fácil de mostrar / ocultar / intercambiar partes de RenderTree es usar un RenderController . Incluso puedes especificar transiciones de entrada / salida

var renderController = new RenderController(); renderController.show( .... ); renderController.hide( .... );

Ver el ejemplo oficial.

2) Quiero administrar el rendimiento (y eliminar cosas que no necesito)

No te preocupes por eliminar los nodos. Famo.us se encargará de esto para usted.

Si desea tomar el control de los nodos representados, escriba una View personalizada con una función de render . La clase Flipper es un ejemplo simple (y el RenderController es un ejemplo complejo de este patrón)

Explicación en profundidad:

  1. Cada RenderNode tiene una función de render que crea un renderSpec .
  2. El renderSpec contiene información sobre un Modifier o Surface .
    • Las especificaciones del Modifier se utilizan para calcular las propiedades finales de CSS.
    • Las especificaciones de Surface están acopladas a elementos DOM.
  3. Cada marca del Engine , el renderSpec se procesa utilizando la función RenderNode.commit .
  4. La función commit usa el ElementAllocator (del Context ) para asignar / desasignar elementos DOM. (Que en realidad recicla los nodos DOM para conservar la memoria)

Por lo tanto: simplemente devuelva la especificación de representación correcta en su View personalizada, y famo.us administrará la memoria y el rendimiento por usted.

Por cierto, no es necesario usar la clase de View ; un objeto con una función de render será suficiente. La clase de View simplemente agrega eventos y opciones, lo que es una buena forma de crear componentes encapsulados y reutilizables.

Actualización: Soluciones confeccionadas

ShowModifier (gist) un modificador simple para mostrar / ocultar partes del árbol de representación

var mod = new ShowModifier({visible:true}); mod.visible = true; mod.show(); mod.hide();

o, como alternativa, use esta información para agregar funciones de visibilidad a Modifier y StateModifier

modifier.visibleFrom(function(){ return true; }) // function, getter object or value stateModifier.setVisible(true); // or false

ADVERTENCIA: ¡ Agregar / eliminar nodos DOM mediante la manipulación de la representación puede causar una penalización en el rendimiento!

Siento que me falta algo obvio, pero ¿cómo elimino los nodos del árbol de procesamiento y los destruyo correctamente?

Parece que puedo hacer algo como mainCtx._node._child.splice(2,1) , pero esto no funciona en todos los casos (las vistas de desplazamiento parecen quedarse), y supongo que hay algo relevante en la API pero puedo No parece encontrarlo.