理解Vue 2.0 的ref属性及简单用法
来源:互联网 发布:上海紫越网络好吗 编辑:程序博客网 时间:2024/06/06 19:00
以一个菜单为例:
先搭建一个菜单列表example.vue:
<style src="./example.less" lang="less" scoped></style><template> <div class="menu"> <div> <div class="side-bar"> </div> <ul class="catalog-list" > <li class="level1" v-for="firstLevel in menuList"> <em class="circle-pointer"></em> <a href="#" class="title-link">{{firstLevel.name}}</a> <ul v-if="firstLevel.children.length>0"> <li class="level2" v-for="secondLevel in firstLevel.children"> <em class="pointer"></em> <a href="#" class="title-link">{{secondLevel.name}}</a> <ul v-if="secondLevel.children.length>0"> <li class="level3" @click="moveArrow" v-for="thirdLevel in secondLevel.children"> <a :href="'#item_'+thirdLevel.id" class="title-link">{{thirdLevel.name}}</a> </li> </ul> </li> </ul> </li> <li class="last"> <em class="circle-pointer"></em></li> <a class="arrow" href="javascript:void(0);"></a> </ul> </div> </div></template><script src="./example.js"></script>
加载数据menuList后效果如图:
为了让左边箭头随鼠标的点击移动,给三级目录绑定事件
获取当前鼠标点击的top以及外层div元素的top
为了访问到DOM元素的值,要用到ref属性,将以上的最外层Div改写为:
<div class="menu" ref="menuBorder">
就可以将class为menu的dom属性集合,即menuBorder挂载到this.refs上,通过this.refs.menuBorderj就可以访问了
example.js:
export default { data() { return { menuList: [{ name: '一级目录', children: [ { name: '二级目录', children: [ { name: '三级目录', children: ['内容'] }, { name: '二级目录', children: [{ name: '三级目录', children: ['内容'] }] }, { name: '二级目录', children: [{ name: '三级目录', children: ['内容'] }] }, { name: '二级目录', children: [{ name: '三级目录', children: ['内容'] }] }, { name: '二级目录', children: [{ name: '三级目录', children: ['内容'] }] }, { name: '二级目录', children: [{ name: '三级目录', children: ['内容'] }] } ] },{ name: '二级目录', children: [ { name: '三级目录', children: ['内容'] }, { name: '二级目录', children: [{ name: '三级目录', children: ['内容'] }] }, { name: '二级目录', children: [{ name: '三级目录', children: ['内容'] }] }, { name: '二级目录', children: [{ name: '三级目录', children: ['内容'] }] } ] }], }] }; }, methods:{ moveArrow:function (e) { console.log($(e.target).offset().top) let parentTop=this.$refs.menuBorder.offsetTop; var top = $(e.target).offset().top - parentTop; $('.arrow').css('top', top ); } }};
less文件省略……
达到目的,是因为别人让用这个才试着使用,刚开始很模糊,不知道它的目的是什么,然后自己用完一遍后,发现就和选择器差不多效果……………………
自己实践了一下
console.log($('.menu').offset().top);console.log(this.$refs.menuBorder.offsetTop)
结果:
好吧,一样的………………
只能安慰自己多学习了一点知识
笑 脸
阅读全文
0 0
- 理解Vue 2.0 的ref属性及简单用法
- vue 中 ref 的用法
- Spring中p:属性及ref的用法总结
- Vue之引用DOM的ref属性
- vue里面ref和生命周期的理解
- Vue 2.0 监听文本框内容变化及 ref的使用说明
- Vue $ref用法
- vue-ref-$refs用法
- Vue2中ref属性的用法
- vue的ref
- ref和out的用法及区别
- Vue- 组件与props属性的用法
- 简单理解vue中Props属性_javascript技巧
- Vue 中$els 的用法和理解
- Vue.js的几个简单属性方法
- Vue.set和Vue.delete属性的简单使用
- 理解vue实现原理,实现一个简单的Vue框架
- 理解vue实现原理,实现一个简单的Vue框架
- JavaScript端构建RESTFul Client的简单例子
- 线性代数 -- 投影矩阵和最小二乘
- Java/Android 设计模式系列(5)--对象池模式
- 数据库概念
- 数据类型的转换
- 理解Vue 2.0 的ref属性及简单用法
- uva 12563 01背包 两个最优条件 lrj-P274
- ajax传输json数据遇到不执行success方法也不报错的问题
- word2vec
- Bootstrap学习方法及案例分享
- 计算机二进制的自我理解
- jquery动态修改背景图片
- 一种非AirPlay的方法来实现IOS录屏
- httpclient调用京东万象数字营销频道新闻api实例