Uso de módulos JavaScript de CommonJS. Tengo un módulo que no puedo editar ni controlar. Llamo a esto el módulo principal.
Quiero aprovechar la funcionalidad de los padres con características adicionales. Algunas de estas funciones secundarias necesitan usar las funciones en el elemento principal. Así que necesito pasar datos al padre y hacer que se ejecute como si fuera parte del módulo principal. Se exporta todo el padre.
Padre
function ParentModule () { DefaultElement.setStatus = function (status, block) { var statusBlock = block.querySelector('.' + this.statusBlock) var statusText = status ? 'Available' : 'Out of Stock'; statusBlock.innerHTML = statusText; } }Niño
function ChildModule () { UpdatedElement.update = function (el) { var selected = document.getElementById(el) var block = this.getBlock(selected) window.ParentModule.DefaultElement.setStatus(true, block); } }Error (esperado)
Uncaught TypeError: Cannot set properties of null (setting 'innerHTML')¿Cuál es la sintaxis o patrón para esto?
Llamar a la función relevante dentro del módulo secundario simplemente provoca un error. Según tengo entendido, esto es lo esperado: como el módulo secundario importa la función principal, se ejecuta dentro del elemento secundario, por lo que no tiene acceso a los mismos datos.
En lugar de importar al elemento secundario, ¿hay alguna forma de que el módulo secundario se comporte como si fuera un solo archivo? ¿O cómo puedo pasar datos al padre y hacer que se comporte como si siempre hubiera sido parte del padre?