我无法从blink中获取textContent
并对其进行更改。如果我对标记或div标记进行同样的尝试,则效果良好。
<b-link
:ref="index"
v-b-toggle="`${index}`"
@click="changeText(index)"
>View More</b-link>
changeText(index) {
console.log(this.$refs[index][0].textContent); // undefined
}
我从vue-js测试用例中发现了如何做到这一点正常情况下,这是
console.log(this.$refs[index][0].textContent);
但是由于bootstrap vue将返回vue组件来访问其元素,因此我们需要使用$el来访问其属性。
console.log(this.$refs[index][0].$el.textContent);
<div />
和<b-link />
之间的区别在于,前者是一个实际的本地HTML标记,而后者是一个提供一定程度抽象的组件。要了解更多信息,我建议阅读有关本地web组件及其Vue对应组件的信息。
要更改<b-link />
的内容,您必须利用Vue的反应性:
let buttonText = 'View More';
<b-link
:ref="index"
v-b-toggle="`${index}`"
@click="changeText(index)"
>{{ buttonText }}</b-link>
changeText(index) {
console.log(viewMore); // undefined
viewMore = 'View Less';
}