ref 有三种用法:
1、ref 加在普通的元素上,用this.$refs.(ref值) 获取到的是dom元素

2、ref 加在子组件上,用this.r e f s . ( r e f 值 ) 获 取 到 的 是 组 件 实 例 , 可 以 使 用 组 件 的 所 有 方 法 。 在 使 用 方 法 的 时 候 直 接 t h i s . refs.(ref值) 获取到的是组件实例,可以使用组件的所有方法。在使用方法的时候直接this.refs.(ref值)获取到的是组件实例,可以使用组件的所有方法。在使用方法的时候直接this.refs.(ref值).方法() 就可以使用了。

3、如何利用 v-for 和 ref 获取一组数组者dom 节点

应注意的坑:
1、如果通过v-for 遍历想加不同的ref时记得加 :号,即 :ref =某变量 ;
这点和其他属性一样,如果是固定值就不需要加 :号,如果是变量记得加 :号。(加冒号的,说明后面的是一个变量或者表达式;没加冒号的后面就是对应的字符串常量(String))

2、通过 :ref =某变量 添加ref(即加了:号) ,如果想获取该ref时需要加 [0],如this.r e f s [ r e f s A r r a y I t e m ] [ 0 ] ; 如 果 不 是 : r e f = 某 变 量 的 方 式 而 是 r e f = 某 字 符 串 时 则 不 需 要 加 , 如 t h i s . refs[refsArrayItem] [0];如果不是:ref =某变量的方式而是 ref =某字符串时则不需要加,如this.refs[refsArrayItem][0];如果不是:ref=某变量的方式而是ref=某字符串时则不需要加,如this.refs[refsArrayItem]。

1、ref 需要在dom渲染完成后才会有,在使用的时候确保dom已经渲染完成。比如在生命周期 mounted(){} 钩子中调用,或者在 this.$nextTick(()=>{}) 中调用。

2、如果ref 是循环出来的,有多个重名,那么ref的值会是一个数组 ,此时要拿到单个的ref 只需要循环就可以了。

添加ref属性

<div id="app"><h1 ref="h1Ele">这是H1</h1><hello ref="ho"></hello><button @click="getref">获取H1元素</button>
</div>
获取注册过 ref 的所有组件或元素
methods: {getref() {// 表示从 $refs对象 中, 获取 ref 属性值为: h1ele DOM元素或组件console.log(this.$refs.h1Ele.innerText);this.$refs.h1ele.style.color = 'red';// 修改html样式console.log(this.$refs.ho.msg);// 获取组件数据console.log(this.$refs.ho.test);// 获取组件的方法}}

Vue代码:

 <el-table @sort-change="sortChange" ref="multipleSelection" border :data="valueDryGoodTableData" style="width: 100%"><el-table-column align="left" prop="title" label="标题" min-width="80%" sortable="custom"><template slot-scope="scope"><a target="_blank" :class="scope.row.titleClicked?'titleClicked':''" class="hoverHand bluetext" v-html="scope.row.title" @click="titleClick(scope.row.articleUrl,scope.$index)"></a></template></el-table-column><el-table-column align="left" prop="releaseTime" label="发布日期" min-width="11%" sortable="custom"></el-table-column><el-table-column align="center" label="操作" min-width="9%"><template slot-scope="scope"><span class="operatoryTools"><i title="取消收藏" v-if="scope.row.isFavour" @click="favoriteOperating(scope.row.id, scope.$index)" class="hoverHand iconStyle el-icon-star-on"></i><i title="收藏" v-else @click="favoriteOperating(scope.row.id, scope.$index)" class="hoverHand iconStyle el-icon-star-off"></i><i title="分享" @click.stop="showShareOperation(scope.$index)" class="shareTarg iconfont"></i><div class="share" v-if="scope.row.showShare"><img class="hoverHand shareItem" title="分享到微博" @click="shareItem('sina',$event);" src="@/images/WEIBO.png"><img class="hoverHand shareItem" title="分享到微信" @click.stop="shareItem('wx',$event);" src="@/images/WEIXIN.png"><img class="hoverHand shareItem" title="分享到QQ" @click="shareItem('qq',$event);" src="@/images/QQ.png"></div><div v-show="scope.row.erweimaShare" class="erweima_share"></div><div v-show="scope.row.erweimaShare1" class="erweima_share1"></div></span></template></el-table-column></el-table>
JS代码://点击清空条件,调用该方法
emptyAndSearch(){//清空条件方法//清空树选中状态this.clearTreeNodeCheck(['tree']);//清除排序this.$refs.multipleSelection.clearSort();//设置分页参数this.queryParam = {startRow : 1,pageSize : 20,condition:{}}//分页查询调用this.confirmSearch('statistics');//设置清空条件为falsethis.$store.commit('valueDryGoodDatas/SET_CLEAR_ALL',false);}

一般来讲,想获取INPUT框,首先在获取DOM元素,需document.querySelector(".input1")获取这个dom节点,然后在获取input1的值。

但是用ref绑定之后,我们就不需要在获取dom节点了,直接在上面的input上绑定input1,然后$refs里面调用就行。

然后在javascript里面这样调用:this.$refs.input1 这样就可以减少获取dom节点的消耗了

VUE中$refs的基本用法相关推荐

  1. Vue知识点二:$refs的基本用法

    $refs的基本用法 ref 有三种用法 ref 加在普通的元素上,用this.$refs.(ref值) 获取到的是dom元素 ref加在子组件上,用this.refs.(ref值)获取到的是组件实例 ...

  2. 「后端小伙伴来学前端了」Vue中 this.$set的用法 | 可用于修改对象中数组的某一个对象、 可用于更新数据到视图

    夜晚有明月,梦里有佳人 前言 最近在写老师布置的vue项目,真的说实话,每天真就是在百度.google.bing等各个搜索引擎之间反复横跳,不然就是掘金搜一搜.思否搜一搜,还有CSDN看一看.我的前端 ...

  3. ElementUI+VUE 日期控件禁用用法

    今天给大家整理一下ElementUI+VUE 日期控件禁用用法,希望对大家有所帮助! HTML文件 <el-date-pickerv-model="value"type=&q ...

  4. 详解Vue中watch的高级用法

    转载自  详解Vue中watch的高级用法 我们通过实例代码给大家分享了Vue中watch的高级用法,对此知识点有需要的朋友可以跟着学习下. 假设有如下代码: 1 2 3 4 5 6 7 8 9 10 ...

  5. slot多作用域 vue_详解Vue.js 作用域、slot用法(单个slot、具名slot)

    作用域HEi免费资源网 在介绍slot前,需要先知道一个概念:编译的作用域.比如父组件中有如下模板:HEi免费资源网 {{message}} 这里的message就是一个slot,但是它绑定的是父组件 ...

  6. vue新版router.addRoute基础用法

    vue新版router.addRoute基础用法 新版Vue Router中用router.addRoute来替代原有的router.addRoutes来动态添加路由.子路由 在添加子路由的时候 比如 ...

  7. Vue中$refs的理解

    Vue中$refs的理解 $refs是一个对象,持有注册过ref attribute的所有DOM元素和组件实例. 描述 ref被用来给元素或子组件注册引用信息,引用信息将会注册在父组件的$refs对象 ...

  8. Vue过滤器的几种用法

    Vue过滤器的几种用法 本文主要介绍Vue项目中filter的几种用法. 一. 单独在组件或者是页面中使用 单独在页面或者是组件中使用vue filter比较简单,主要是用在{{ }} 和v-bind ...

  9. vue中$refs的三种用法

    我们都知道,在vue2中获取DOM元素,可以直接在元素上绑定ref属性,然后获取到DOM元素的属性值,这种方法在vue3 中仍然可以使用,但也会有一些问题.下面就介绍$refs的三种用法: 1.vue ...

最新文章

  1. dataframe,python,numpy 问题索引2
  2. MySQL面试题 | 附答案解析(三)
  3. 在什么情况下Java比C++快?
  4. ElementUI中的el-form怎样格式化显示1和0为是和否
  5. 12天背诵楞严咒的技巧_背诵楞严咒的技巧
  6. 基金大跌,基民上闲鱼“卖货回血”了!支付宝深夜发文!真的没人买基了?...
  7. linux系统环境下压缩与解压缩
  8. 一对一单双向主键关联
  9. puml绘制思维导图_免费在线思维导图神器 简单又漂亮 比Wodrd好用很多
  10. jsp el表达式无法正常显示解决方法
  11. oschina的技术架构 使用 Live Writer 在 oschina 上写博客
  12. 【笔记】如何配置kvm桥接网络
  13. kernel ramdump分析
  14. Camera Link协议解析图文及视频
  15. 服务器上的 smb 协议,使用smb协议python3访问服务器上的远程文件
  16. html转word 自动分页,word怎样自动分页
  17. 任正非讲话稿400篇_任正非讲话稿400余篇分享,最全任正非演讲稿下载
  18. 阿里云acp证书有用吗?阿里云acp证书考试内容有哪些?
  19. Android--经典蓝牙(文件传输--socket通信)
  20. python预测药_Python数据分析实例-药品销售分析

热门文章

  1. updatepanel 排版问题
  2. 2-网络编程模型:认识客户端-服务器网络模型的基本概念
  3. 90后和他的“全球充电网络”梦
  4. Spring boot 保姆级教程,包学包会,授之以渔
  5. JAVA JDK 源码学习
  6. 案例22:基于Springboot+vue的患者交流系统设计与实现开题报告
  7. 基于STM32L431单片机和NB-IOT技术的低功耗追踪器
  8. 绿化地球行动,展示“E”
  9. java数字分割的下划线_在Java中使用下划线分隔数的字面值的用法讲解
  10. 美团笔试题——淘汰分数