Solo se permite que se elimine un componente
Pregunta
Perdón por la pregunta de principiante, pero si tengo un componente de campo de texto y solo quiero permitir que el usuario coloque un número específico de ellos en el lienzo, digamos solo uno. ¿Cómo puedo limitarlo? ¿Quizás una forma que muestre una alerta para explicar que no pueden añadir otro componente de campo de texto al lienzo a menos que eliminen el existente?
Respuestas (2)
Así que ahora mismo tengo una solución muy fea:
editor.on('load',
función() {
var existingComponents = editor.getComponents();
if (existentingComponents.models.filter(function(e) { return e.attributes.tagName === 'form'; }). longitud > 0) {
$($($("cuerpo .gjs-bloque-categoría")[1]).find(".gjs-block")[0]).hide();
}
}
);
editor.on('component:add', component => {
si (component.is('forma')) {
$($($("cuerpo .gjs-bloque-categoría")[1]).find(".gjs-block")[0]).hide();
}
});
editor.on('component:remove', component => {
si (component.is('forma')) {
$($($("cuerpo .gjs-bloque-categoría")[1]).encontrar(".gjs-bloque")[0]).mostrar();
}
});
Esto básicamente mira si el componente está en el lienzo cuando está cargado. Si es así, entonces oculta el botón de componente arrastrable. Aquí podría usar una mejor forma de ocultar el botón, ¿cómo? Puedo acceder al componente con 'const form = editor. BlockManager.get('form');' pero ¿cómo lo oculto una vez que lo tengo? Luego tengo oyentes para añadir y quitar para ocultar y mostrar el botón de componente, el mismo problema que antes.
Parece una forma horrible de hacerlo. Debe de haber alguna opción que me esté perdiendo para "solo uno permitido". ¿Alguna sugerencia?
Preguntas y respuestas relacionadas
Continúa investigando con debates sobre temas similares.
Issue #577
Solo permite un componente de tipo específico en el editor
¿Hay alguna forma de no permitir que ningún componente específico se deshaga más de una vez en la página? Tengo un componente personalizado...
Issue #2768
[PREGUNTA] ¿Puedo añadir un oyente cuando el usuario arrastra un elemento en el lienzo?
Hola, GrapesJS tiene un montón de eventos que se pueden escuchar con editor.on. Uno de ellos es 'canvas:drop'. Pero solo se activa cuando s...
Issue #3409
[PREGUNTA] Propiedad de componente personalizada que no es un rasgo
Me gustaría crear un componente personalizado con una propiedad que se actualice según un código específico, pero no quiero que esta propie...
Issue #716
No permitir el redimensionamiento selectivo de la imagen
No quiero que el usuario redimensione la imagen en una zona específica de la plantilla, pero quiero permitir cualquier lugar en el lienzo....
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 →Tutoriales relacionados
Guías detalladas sobre el mismo tema.
Tutorial
Ship to Production Faster: What’s New in GrapesJS Shadcn
Supercharge your page builder! GrapesJS Shadcn adds live drag previews, rich text / commands, dynamic data, and canvas presets to ship to prod faster.
Tutorial
GJSDocs: Say Goodbye to Manual Document Work
Invoices, contracts, proposals, reports — all generated automatically. GJSDocs turns your template into a live document in seconds.
Tutorial
Preset DevFuture 2.0 — New Update Released
Preset continues evolving as a clean, production-ready starting point for building visual editors powered by GrapesJS
Explorar categorías de plugins
Ve directamente a las páginas de categorías de plugins en el marketplace.