Issue #2360💬 RespondidoAbierto el 30 de octubre de 2019por MartinPutzReacciones 1

¿Cómo añadir un nuevo tipo de propiedad (entero) a StyleManager?

Respuesta rápidapor MartinPutz1

Tenías razón, ahora funciona. Muchas gracias. ¡Gran proyecto!

Lee la respuesta completa abajo ↓

Pregunta

Hola, Estoy intentando crear una propiedad personalizada de StyleManager con el tipo 'entero'.

Mi objetivo final es 'redefinir' cómo se muestran ciertas unidades. Por ejemplo, el usuario usa la unidad 'X' y entonces el valor real sería diferente en píxeles. (Una de las razones es el nuevo modo de arrastre, ya que usa píxeles, así que quiero mantener todos los valores en píxeles pero permitiendo al usuario usar otras unidades).

He comprobado las funciones disponibles y, ampliando la entrada de números 'enteros', debería poder conseguirlo. Pero me sale un error cuando intento extender el tipo 'entero'.

El código que probé:


const sm = editor. StyleManager;
    const propModel = sm.getType('enterger').model;
    sm.addType('converted_integer', {
      model: propModel.extend({
        Predeterminados: {
          ... propModel.prototype.defaults,
          Unidades: [],
          Unidad: '',
          Paso: 1,
          Min: '',
          Max: ''
        },
        init() {
          this.listenTo(this, 'change', this.valueChanged);

},
        valueChanged(value) {
          console.log("valor cambiado",esto);
        },
      }),
      view: sm.getType('enterger').view.extend({

}), 
      isType: (valor) => {
        si (value && value.type == 'converted_integer') {
          return value;
        }
      },
     });

Esto da un error: "No se puede establecer la propiedad 'ppfx' de indefinida"

Si no amplío la propiedad de vista, vuelve al tipo por defecto sin problemas. Si extiendo el tipo de entrada 'stack' no hay ningún problema.

¿Qué se requiere para una propiedad entera personalizada como esa? (Versión de GrapesJs:0.15.8)

Gracias por tu ayuda.

Respuestas (2)

MartinPutz3 de noviembre de 2019

Tenías razón, ahora funciona. Muchas gracias. ¡Gran proyecto!

artf2 de noviembre de 2019

En realidad, la propiedad entera tiene una implementación incorrecta de 'init' (lo corregiré en la próxima versión). Por ahora, actualiza tu método init con el código de abajo y prueba si funciona '''js init() { propModel.prototype.init.apply(esto, argumentos); this.listenTo(this, 'change', this.valueChanged); },

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 →

Explorar categorías de plugins

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