¿Cómo ampliar los rasgos existentes y renderizar los cambios en el lienzo?
No necesitas actualizar la vista en este caso, solo cambiar las clases dentro del modelo. Solo necesitas esto '''js doStuff() { this.setClass(this.get('classProp')); }, ```
Lee la respuesta completa abajo ↓Pregunta
Estoy intentando escribir un plugin para gestionar todas las propiedades de los elementos de los bloques Boostrap. Si alguien hace clic en el botón, mostrará propiedades relacionadas con los botones como colores, tamaño, etc. (basado en las clases bootstrap predeterminadas)
El siguiente código modifica las clases de botones y los ajustes almacenados en el modelo, pero no sé cómo renderizar los cambios correctamente.
Aquí está mi código:
grapesjs.plugins.add('test-plugin', function (editor) {
var domComps = editor. DomComponents;
var dType = domComps.getType('link');
var dModel = dType.model;
var dView = dType.view;
var inputTypes = [
{ valor: 'btn btn-primario', nombre: 'Primario' },
{ valor: 'btn btn-info', nombre: 'Info' },
{ valor: 'btn btn-danger', nombre: 'Danger' },
{ valor: 'btn btn btn-warning', nombre: 'Warning' },
];
domComps.addType('link', {
model: dModel.extend({
defaults: Object.assign({}, dModel.prototype.defaults, {
Rasgos: ['Título', 'Href', 'Objetivo', 'Clase', {
tipo: 'select',
etiqueta: 'Buttons Colors',
nombre: 'classProp',
opciones: inputTypes,
cambioProp: 1,
}],
}),
init() {
this.listenTo(this, 'change:classProp', this.doStuff);
},
doStuff() {
console.log(este);
this.set('classProp', this.changed['classProp']);
this.view.el.classList.remove();
this.view.el.className = this.changed['classProp'];
this.attributes.tagName = this.get('classProp')
this.view.render();
editor.trigger('component:update');
editor.store();
},
}, {
isComponent: function (el) {
if (el.tagName == 'A') {
return { type: 'link' };
}
},
}),
view: dView.extend({
render: función () {
console.log(este);
this.model.set('classProp', this.model.get('classProp'));
editor.render();
dView.prototype.render.apply(esto, argumentos);
Extiende el método de renderizado original
this.el.className = this.model.get('classProp');
devuelvo esto;
},
}),
vista: dVista,
});
});
Respuestas (2)
No necesitas actualizar la vista en este caso, solo cambiar las clases dentro del modelo. Solo necesitas esto '''js doStuff() { this.setClass(this.get('classProp')); },
Este hilo se ha bloqueado automáticamente porque no ha habido actividad reciente desde que se cerró. Por favor, abre un nuevo problema para bugs relacionados.
Preguntas y respuestas relacionadas
Continúa investigando con debates sobre temas similares.
Issue #1484
[Pregunta]: Las filas siguientes del bloque de texto no dan el cursor/editor de texto enriquecido al hacer clic, sino que se seleccionan en su lugar
He notado un comportamiento extraño en mi adaptación de GrapesJS respecto al editor de texto rico y el plugin gjs-blocks-basic. Cada vez qu...
Issue #1414
[PREGUNTA] Evento de "primer renderizado" del componente
Hola. Estoy desarrollando un plugin para gráficos usando chart.js. Necesito mantener el modelo del gráfico dentro del componente generado p...
Issue #1912
[PREGUNTA] Componentes personalizados hijos por defecto
Hola, Estoy intentando entender cómo puedo lograr lo siguiente.Crear un componente con un contenido predeterminado como hijos.Crea un bloqu...
Issue #1750
[Pregunta] Mostrar esquemas de dibujo solo bajo bloques de edición activa
¿Es posible mostrar los contornos de dibujo de mostrar solo para los seleccionados actualmente (con todos los hijos) y para los elementos f...
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.
Explorar categorías de plugins
Ve directamente a las páginas de categorías de plugins en el marketplace.