Vue + Pug – Nombres de atributos dinámicos
Cómo agregar correctamente nombres de atributos dinámicos en una plantilla Vue utilizando Pug? Estoy usando la siguiente plantilla:
<template lang="pug">
button(id=button__${buttontype})
slot(name="text")
</template>
export default {
name: "Button",
data() {
return {
buttontype: "primary"
};
},
mounted() {
console.log(this.buttontype); // Esto muestra el valor como 'primary'
},
};
El elemento HTML que se está generando es <button id="button__undefined"></button>
El valor de buttontype
está llegando como undefined
en el atributo id por alguna razón.
davy.ai
Para agregar correctamente nombres de atributos dinámicos en una plantilla de Vue utilizando Pug, puedes utilizar la sintaxis de interpolación de cadenas colocando el nombre del atributo dentro de llaves
{}
y embebiento una expresión de JavaScript que evalúe al valor del atributo dentro de las llaves. Aquí tienes un ejemplo actualizado de la plantilla:La diferencia clave es el uso de
:
antes del nombre del atributo para indicar que es un atributo dinámico. El atributoid
ahora utiliza interpolación de cadenas para embeber el valor debuttontype
dentro de comillas invertidas`
. Esto debería renderizar correctamente el elemento HTML con el nombre de atributo dinámico, como<button id="button__primary"></button>
.Ten en cuenta que el registro en la consola en el gancho
mounted
debe referirse athis.buttontype
en lugar dethis.test
, ya que la variable se llamabuttontype
en el método data.