使用vuejs时,如何正确获取v-for循环出来的元素。

1.使用v-for循环得到的列表<li>元素,想要通过监听mouseover和mouseout两个事件来对划过的<li>元素的样式进行修改,但是在方法中使用this无法正确获得我需要元素。比如我在methods中定义的方法showUp,并且在data中已经给每个<li>元素定义了pageup属性,但是在showUp中打印pageup的结果是undefined,这是为什么?求高手解释下!
2.代码如下:
clipboard.png

clipboard.png

clipboard.png

3.结果如下:

clipboard.png

阅读 6.9k
6 个回答

showUp函数里面的this ,指向的是 当前vue实例,可以获取到 this.pageitems 整个数组

虽然 给每个<li>元素定义了pageup属性,但是没有给对应的li 元素添加对应的属性

@mouseover = showUp(item),这里传入item,就可以拿到 item.pageup属性了。

这个肯定获取不到啊!
改写showUp,传入index
showUp(index) {

console.log(this.pageitems[index].pageup)

}
你再看看

你把data对象定义成数组,肯定得数组[索引]里的json[key]才能获得啊

clipboard.png

clipboard.png

showUp:function(val) {

console.log(this.pageitems[val].pageup)
}

感觉你没思考过,打印下this,看看输出,思考一分钟,如果还是想不通,再来问。

建议多看看文档 this指向的是vue实例 this.a 是return里面的变量

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
1 篇内容引用
推荐问题
宣传栏