vue悬停下拉菜单(视频门户网站)

来源:互联网 发布:优酷客户端for mac 编辑:程序博客网 时间:2024/06/04 17:47

一开始写静态页面的时候,用的是jq的方法实现,没想到拆分结构作为组件放在vue中就失效了,一进入页面的时候功能存在,但是从二级返回到首页的时候,功能失效,可以看出jq和vue的事件有冲突了。
上下所要实现的效果图:


(交互其实就是鼠标悬停的时候出现一级菜单,当再次悬停在一级菜单的每一项后,对应的二级菜单展开。其实写完了之后与jq对比下来,vue对事件的操作绑定太方便了)

这里写图片描述
首先在data里定义一级二级菜单隐藏

这里写图片描述

这里写图片描述

这里写图片描述

一级菜单的展开很容易,在执行isShow的方法的时候,让show不等于show;
从一级菜单对应的展开有数据的一列,就遇到问题了,本来我想顺着通过从我的循环拿出索引值,索引值是能拿到,但是功能没实现。
后来换了个思路,在data里定义一个block,循环我的数据,把我定义的block赋上false(默认的值,这样可以让二级菜单隐藏),把我定义好的block对象放入我的数据中,这样我的数据结构里就会有这条数据,我通过v-for循环给二级菜单的v-show添加上我数据里循环到的block(此时它的值是false,也就是隐藏了),最后一步就是执行方法,这里的方法里有两个参数,第一个参数就是我循环的数组(在方法里已经定义了我要循环的是第几个对象里的block),第二个参数就是一个字符串,在方法中判断,悬停的时候第二个参数如果是”in”,那么就让block = true,二级菜单展现,移出的时候第二个参数如果是”out”,那么久让block = false,就是这样的一个功能。

你们会看到我在循环给数据绑定block的时候有一个$set这个方法,这里是重点,一定要这么添加,我一开始是直接绑定到数据里,最后功能一直实现不了,最后就是加了$set实现了。

阅读全文
0 0
原创粉丝点击