我想在呈现的列表中获取项目的innerText
,但使用this.$refs
访问它似乎不起作用。我也试过使用v-modal
,这似乎也不起作用。
这是我的代码:
<div id="simple" v-cloak>
<h1>Clicked word value!</h1>
<ul>
<li v-for="word in wordsList" @click="cw_value" ref="refWord">
{{ word }}
</li>
<h4> {{ clickedWord }} </h4>
</ul>
</div>
var app = new Vue({
el: '#simple',
data: {
clickedWord: '',
wordsList: ['word 1', 'word 2', 'word 3']
},
methods: {
cw_value: function() {
this.clickedWord = this.$refs.refWord.innerText
// "I don't know how to get inner text from a clicked value"
}
}
})
答案 0 :(得分:4)
由于您在与ref="refWord"
相同的元素上使用了v-for
,因此this.$refs.refWord
是一个包含由v-for
呈现的每个DOM元素的数组。
您应该引用每个单词的索引,然后将其传递给单击处理程序:
<li v-for="word, index in wordsList" @click="cw_value(index)" ref="refWord">
然后,在您的cw_value
方法中,使用索引值来访问数组中的正确元素:
cw_value: function(index) {
this.clickedWord = this.$refs.refWord[index].innerText;
}
或者,在点击处理程序中单击设置点击的单词会更简单:
<li v-for="word in wordsList" @click="clickedWord = word">