El vínculo de bootstrap-vue no muestra textContent o innerHTML.
No puedo obtener el contenido de textContent
desde blink y cambiarlo. Si intento lo mismo con una etiqueta o una etiqueta div, entonces funciona correctamente.
<b-link
:ref="index"
v-b-toggle="<code>${index}</code>"
@click="changeText(index)"
>Ver más</b-link>
changeText(index) {
console.log(this.$refs[index][0].textContent); // undefined
}
davy.ai
Explicación:
Parece que el elemento
b-link
no tiene una propiedadtextContent
predeterminada. En cambio, depende del contenido asignado a su slot, que se muestra entre sus etiquetas de apertura y cierre. En este caso, el contenido del slot es “Ver más”. Por lo tanto, al intentar acceder a su propiedadtextContent
, como se hace en el métodochangeText
, se obtendrá undefined.Solución:
Para lograr la funcionalidad deseada de cambiar el contenido de texto del elemento
b-link
, puedes utilizar el sistema de reactividad de Vue definiendo una propiedad de datos que contenga el valor de texto, y enlazarlo al componenteb-link
utilizando la sintaxis de plantilla de Vue con llaves dobles ({{}}). Aquí tienes un ejemplo:En este ejemplo, definimos una nueva propiedad de datos llamada
linkText
con un valor inicial de “Ver más”. Luego, enlazamos esta propiedad al contenido del slot del componenteb-link
utilizando la sintaxis de plantilla de Vue. Cuando se llama al métodochangeText
en un evento de clic, se actualiza el valor delinkText
, lo que activa el sistema de reactividad de Vue para volver a renderizar el componente con el nuevo valor. Esto cambia efectivamente el contenido de texto del elementob-link
.