Crear rasgo como el rasgo de vídeo
El componente de vídeo es una gran demostración en sí mismo. Se puede encontrar en 'grapesjs repo root > src > dom_components > model > ComponentVideo.js'. Aquí tienes un ejemplo de código con el mínimo imprescindible: '''es6 var domComps = editor. DomComponents; var dType = domComps.getType('default'); var dModel = d...
Lee la respuesta completa abajo ↓Pregunta
¿Cómo hago que un rasgo sea como un vídeo? Tengo un tipo de proveedor, el otro tipo de rasgo depende del proveedor que elija, ¿se puede demostrar? Muchas gracias. ! proveedor
Respuestas (2)
El componente de vídeo es una gran demostración en sí mismo. Se puede encontrar en 'grapesjs repo root > src > dom_components > model > ComponentVideo.js'. Aquí tienes un ejemplo de código con el mínimo imprescindible: '''es6
var domComps = editor. DomComponents; var dType = domComps.getType('default'); var dModel = dType.model; var dView = dType.view;
domComps.addType('testBlock', { model: dModel.extend({ init() { const traits = [this.getProvidersTrait(), this.getOption1Trait()]; this.set ('rasgos', rasgos); this.listenTo(this, 'change:provider', this.updateTraits); }, updateTraits() { var prov = this.get('provider'); Rasgos var = []; Switch (prov) { caso 'TraitOption1': rasgos = [este.TrechoDeProveedor(), esto.ObténTratoOpción1)]; pausa; caso 'Opción2': rasgos = [esto.TratoProveedorT(), esto.TratoOpción2Obtener()]; pausa; Por defecto: pausa; } this.loadTraits(traits); this.em.trigger('component:toggled'); }, getProviderTrait() { return { tipo: 'select', etiqueta: 'Proveedor', Nombre: 'Proveedor', cambioProp: 1, Opciones: [ { valor: 'traitOption1', nombre: 'traitOption1' }, { valor: 'traitOption2', nombre: 'traitOption2' } ] } }, getOption1Trait() { return { Tipo: 'texto', etiqueta: 'Option1', Nombre: 'Option1', cambioProp: 1, } }, getOption2Trait() { return { Tipo: 'texto', etiqueta: 'Opción2', Nombre: 'Option2', cambioProp: 1, } } }, { isComponent: function(el) { if(el.tagName == 'DIV'){ return {type: 'testBlock'}; } }, }),
vista: dVista, });
Puedes probar esto añadiendo un div sencillo al Gestor de Bloques
'''es6
editor. BlockManager.add('testBlock', {
etiqueta: 'Bloque',
tipo: 'testBlock',
contenido: '<div>Test block</div>'
});
Las partes importantes son 'this.listenTo(this, 'change:provider', this.updateTraits);' en la función type init() para escuchar cambios en el rasgo principal y asegurarse de que changeProp esté configurado en 1 en los rasgos, de lo contrario change:provider no detectará las actualizaciones.
Vale, muchas gracias, lo entiendo
Preguntas y respuestas relacionadas
Continúa investigando con debates sobre temas similares.
Issue #2069
[BUG] 'allowScripts: true' sigue <script> eliminando etiquetas
Hola a todos. Gracias por crear y mantener este increíble proyecto. 🙏 Descripción del bug Tengo un bloque que inserta un script como se es...
Issue #1987
[PREGUNTAS] Crear barra de herramientas en la parte inferior
¿Puedo crear una nueva barra de herramientas que esté situada en la parte inferior (como muestra el cursor) cuando selecciono el componente...
Issue #827
[PREGUNTA] Cambiar la ubicación del panel de mandos
¡Biblioteca increíble, gracias! Tengo dos preguntas que espero que puedas ayudar.¿Cómo puedo mover el panel de comandos de arriba a izquier...
Issue #3185
[PREGUNTA] ¿Cómo obtener el rasgo del modelo de un componente?
Hola, He añadido un nuevo tipo de "array" al TraitManager. Así que puedo añadir varios subrasgos. En un punto tengo que comprobar los rasgo...
Plugins de pago que cumplen con este problema
Seleccionado por temas clave y relevancia de etiquetas para ayudarte a enviar más rápido.
Cargando recomendaciones de plugins de pago...
Consulta los plugins de código abierto de GrapesJS en GitHub O haz una búsqueda rápida en nuestro catálogo gratuito.
Explora plugins gratuitos →Los plugins premium incluyen soporte, actualizaciones regulares y funciones listas para producción — ahorrando días de trabajo de integración.
Explora plugins premium →Explorar categorías de plugins
Ve directamente a las páginas de categorías de plugins en el marketplace.