Issue #841✓ ResueltoAbierto el 6 de febrero de 2018por kewilsonReacciones 3

Añadir Rasgo (atributo) por defecto al modelo para todos los componentes HTML (elementos)

Respuesta rápidapor ryandeba3

Hola @kewilson, Tienes varios enfoques diferentes para lograr esto... si cada componente necesita este rasgo personalizado, probablemente anularía el método 'inicializar' del tipo de componente por defecto y lo añadiría allí. Algo así: Alternativamente, podrías permitirte simplemente añadir tu rasgo que el componente...

Lee la respuesta completa abajo ↓

Pregunta

Hola,

He leído las wikis de Traits, Components y API, he recopilado todos los temas abiertos y cerrados. Incluso he encontrado el código donde creas los valores predeterminados (ID, Título, Alt) que tienes hoy. Se han hecho preguntas similares, pero ninguna responde a la pregunta principal.

Para cada componente HTML quiero añadir otro atributo predeterminado (rasgo) además de los atributos predefinidos (ID, Título, Alt, etc.). Esto incluye añadir el nuevo rasgo a flexboxes, divs, entradas, imágenes, etc., de modo que cuando se selecciona Configuración veamos (usando el tipo de texto como ejemplo):

ID [Texto provisional] Título [Texto provisional] AtributoLoco [Texto marcador] <<<==== Ejemplo de nuevo atributo predeterminado (rasgo)

Según algunas respuestas a los problemas, así como en tu página de la wiki de Rasgos, los ejemplos de rasgos giran en torno a añadir un nuevo componente, cosa que no quiero hacer; quiero que todos los componentes existentes hereden el nuevo atributo aunque hoy no tengan uno.

No me queda claro en los ejemplos mostrados en la wiki de Rasgos cómo simplemente añadiría otro rasgo predeterminado al modelo para que se aplique a todos los componentes.

Por ejemplo, <section class="flex-sect" CrazyAttribute="SomeValue"> ... </section>

Cualquier orientación sería muy apreciada.

¡Gracias!

Respuestas (3)

👍 Muy útilryandeba6 de febrero de 2018

Hola @kewilson,

Tienes varios enfoques diferentes para lograr esto... si cada componente necesita este rasgo personalizado, probablemente anularía el método 'inicializar' del tipo de componente por defecto y lo añadiría allí. Algo así:

var defaultType = editor. DomComponents.getType("default");
var _initialize = defaultType.model.prototype.initialize;
defaultType.model.prototype.initialize = function() {
	_initialize.aplicar (esto, argumentos);

this.get("traits").add({
		Tipo: "entrada",
		etiqueta: "Atributo Loco",
		Nombre: "Data-crazy"
	});
};

Alternativamente, podrías permitirte simplemente añadir tu rasgo que el componente 'predetermine':

editor. DomComponents.getType("default").model.prototype.defaults.traits.push({label: "Crazy Attribute", nombre: "data-crazy"})
kewilson7 de febrero de 2018

Hola@ryandeba muchas gracias por las sugerencias. Puse el segundo y funciona, bueno, para los valores predeterminados, como cabría esperar. Bloques como enlace, imagen, entrada, por nombrar algunos, no añaden el atributo, pero esos deben clasificarse de forma diferente. No obstante, un éxito en general para mí.

Gracias de nuevo, lo agradezco mucho.

josefph8 de marzo de 2018

@kewilson podrías ayudarme a añadir otro rasgo por defecto en un componente específico?

Preguntas y respuestas relacionadas

Continúa investigando con debates sobre temas similares.

Plugins de pago que cumplen con este problema

Seleccionado por temas clave y relevancia de etiquetas para ayudarte a enviar más rápido.

Ver todos los plugins

Cargando recomendaciones de plugins de pago...

Opción gratuita

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 →
Opción premium

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.

Todos los tutoriales →

Explorar categorías de plugins

Ve directamente a las páginas de categorías de plugins en el marketplace.