问题 Vue.js处理多次点击事件


我有一个列表,并希望处理列表中每个项目的单击事件

<ul>
  <li 
    v-for="item, index in items" 
    :key="index"
    @click="select(item)"
  >
    {{ item }}
  </li>
</ul>

而剧本是

...
methods: {
  select(item) {
    console.log('Select', item)
  }
}

当有大约10个项目时,这很有效。但是,当大约有1000个项目时,性能变得非常慢,因为我为1000个项目附加了1000个事件。

解决方案是仅为列表附加一个单击事件并使用 event.target

<ul @click="select($event)">
  <li 
    v-for="item, index in items" 
    :key="index"
  >
    {{ item }}
  </li>
</ul>

在功能上 select, 我怎样才能得到 item 对应每个项目?


12983
2018-03-07 10:08


起源



答案:


您可以使用

<ul @click="select($event)">
  <li 
    v-for="item, index in items" 
    :key="index"
    :id="index"
  >
    {{ item }}
  </li>
</ul>

然后在你的 select

select($event) {
  console.log('Select ', $event.srcElement.id)
}

10
2018-03-07 10:16