Supongamos el siguiente fragmento de código tonto en una plantilla de página de plone 5:
<input id="foo" class="pat-pickadate" /> <input id="bar" /> <script type="text/javascript" > $('#bar').click( function () { $('#bar').addClass("pat-pickadate"); }); </script>Obtendrá dos entradas. La primera es una buena entrada de calendario y la segunda está vacía al inicio. Después de hacer clic en la segunda entrada, su clase se establecerá en "pat-pickadate", como la primera, pero no se representará ningún calendario.
Encontré esto mientras intentaba encontrar la razón por la cual mis superposiciones de jquery-UI que muestran las vistas de edición y adición de plone ya no muestran (Plone5) widgets de calendario en absoluto.
¿Este comportamiento es intencionado? Si es así, ¿cuál es la forma correcta de usar widgets de maquetas en formularios obtenidos dinámicamente por llamadas AJAX en Plone 5? ¿Hay alguna llamada mágica para informar a la maquinaria Mockup del cambio de DOM?
Leí que Mockup tiene su propia técnica de superposición, pero es difícil reescribir unas 600 líneas de código JS complejo solo para obtener un widget simple correctamente.
No pude encontrar ninguna documentación ni ejemplos sobre este tema. ¿Puede alguien ponerme en la dirección correcta, por favor?
Los patrones se inicializan en el momento de la carga, si su DOM cambia y contiene nuevos elementos que se supone que se representan mediante un patrón, debe llamar a Registry.scan .
Para hacerlo, deberá cambiar su script de esta manera:
require([ 'jquery', 'pat-registry' ], function($, Registry) { $('#bar').click( function () { $('#bar').addClass("pat-pickadate"); Registry.scan($('#bar')); }); })El script no debe estar en línea, porque nada garantiza que JQuery y/o require ya estén cargados. Así que coloque su código en un archivo JS separado y asegúrese de que esté cargado en su página usando una de esas 2 formas:
coloque su archivo en su tema de Diazo y agregue una etiqueta <script> en su index.html (prefiera este enfoque si está desarrollando un módulo de tema)
declare su secuencia de comandos directamente como un paquete compilado en registry.xml , consulte https://github.com/collective/example.p4p5/blob/master/src/example/p4p5/profiles/plone5/registry.xml (prefiera este enfoque si está desarrollando un módulo adicional)