如何在VueJS中获取渲染列表项的innerText

Mar*_*nek 3 javascript vuejs2

我想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>
Run Code Online (Sandbox Code Playgroud)
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"
    }
  }
})
Run Code Online (Sandbox Code Playgroud)

tha*_*ksd 5

由于您ref="refWord"在与 a 相同的元素上使用了v-for,this.$refs.refWord是一个包含由 呈现的每个 DOM 元素的数组v-for

您应该引用每个单词的索引,然后将其传递给点击处理程序:

<li v-for="word, index in wordsList" @click="cw_value(index)" ref="refWord">
Run Code Online (Sandbox Code Playgroud)

然后,在您的cw_value方法中,使用索引值访问数组中的正确元素:

cw_value: function(index) {
  this.clickedWord = this.$refs.refWord[index].innerText;
}
Run Code Online (Sandbox Code Playgroud)

这是一个工作小提琴。


或者,在点击处理程序中内联设置点击的单词会简单得多:

<li v-for="word in wordsList" @click="clickedWord = word">
Run Code Online (Sandbox Code Playgroud)

这也是一个工作小提琴。