Vue 中的 ref $refs
ref 被用来给DOM元素或子组件注册引用信息。引用信息会根据父组件的 $refs 对象进行注册。如果在普通的DOM元素上使用,引用信息就是元素; 如果用在子组件上,引用信息就是组件实例
注意:只要想要在Vue中直接操作DOM元素,就必须用ref属性进行注册
实例:
这里为了在create的时候引用DOM元素,先在DOM中使用ref标签进行了注册,然后便可以通过’this.$refs’再跟注册时的名称来引用DOM元素了
第二部分
vue中的 ref 和 $refs



如图,ref 被用来给元素或子组件注册引用信息。引用信息将会注册在父组件的 $refs 对象上。如果在普通的 DOM 元素上使用,引用指向的就是 DOM 元素;如果用在子组件上,引用就指向组件实例:
在上面的例子中,input的引用信息为input1 ,$refs 是所有注册过的ref的一个集合,
console.log(this.$refs.input1)//<input type="text" id="input1">
console.log(document.getElementById('input1'))//<input type="text" id="input1">
这两种方法获得的都是Dom节点,而$refs相对document.getElementById的方法,会减少获取dom节点的消耗。




ref和v-for在一起的情况

li里的ref的无法读取item里面的值,即item.name或被直接读取为字符串“item.name”,
此时的$refs


第三部分:
一、ref使用在外面的组件上
HTML 部分
<div id="ref-outside-component" v-on:click="consoleRef"><component-father ref="outsideComponentRef"></component-father><p>ref在外面的组件上</p></div>
js部分
var refoutsidecomponentTem={template:"<div class='childComp'><h5>我是子组件</h5></div>"};var refoutsidecomponent=new Vue({el:"#ref-outside-component",components:{"component-father":refoutsidecomponentTem},methods:{consoleRef:function () {console.log(this); // #ref-outside-component vue实例console.log(this.$refs.outsideComponentRef); // div.childComp vue实例}}});
二、ref使用在外面的元素上
HTML部分
- <!--ref在外面的元素上-->
- <div id="ref-outside-dom" v-on:click="consoleRef" >
- <component-father>
- </component-father>
- <p ref="outsideDomRef">ref在外面的元素上</p>
- </div>
JS部分
var refoutsidedomTem={template:"<div class='childComp'><h5>我是子组件</h5></div>"};var refoutsidedom=new Vue({el:"#ref-outside-dom",components:{"component-father":refoutsidedomTem},methods:{consoleRef:function () {console.log(this); // #ref-outside-dom vue实例console.log(this.$refs.outsideDomRef); // <p> ref在外面的元素上</p>}}});
三、ref使用在里面的元素上---局部注册组件
HTML部分
- <!--ref在里面的元素上-->
- <div id="ref-inside-dom">
- <component-father>
- </component-father>
- <p>ref在里面的元素上</p>
- </div>
JS部分
var refinsidedomTem={template:"<div class='childComp' v-on:click='consoleRef'>" +"<h5 ref='insideDomRef'>我是子组件</h5>" +"</div>",methods:{consoleRef:function () {console.log(this); // div.childComp vue实例console.log(this.$refs.insideDomRef); // <h5 >我是子组件</h5>}}};var refinsidedom=new Vue({el:"#ref-inside-dom",components:{"component-father":refinsidedomTem}});
四、ref使用在里面的元素上---全局注册组件
HTML部分
- <!--ref在里面的元素上--全局注册-->
- <div id="ref-inside-dom-all">
- <ref-inside-dom-quanjv></ref-inside-dom-quanjv>
- </div>
JS部分
Vue.component("ref-inside-dom-quanjv",{template:"<div class='insideFather'> " +"<input type='text' ref='insideDomRefAll' v-on:input='showinsideDomRef'>" +" <p>ref在里面的元素上--全局注册 </p> " +"</div>",methods:{showinsideDomRef:function () {console.log(this); //这里的this其实还是div.insideFatherconsole.log(this.$refs.insideDomRefAll); // <input type="text">}}});var refinsidedomall=new Vue({el:"#ref-inside-dom-all"});
Vue 中的 ref $refs的更多相关文章
- Vue.js-11:第十一章 - Vue 中 ref 的使用
一.前言 在之前的前端开发中,为了实现我们的需求,通常采用的方案是通过 JS/Jquery 直接操纵页面的 DOM 元素,得益于 Jquery 对于 DOM 元素优异的操作能力,我们可以很轻易的对获取 ...
- vue中$refs的使用
vue中$refs获取组件或元素: 获取的元素就相当于是一个原生获取的元素,可以进行操作 this.$refs.ele.style.color = 'red
- Vue中$refs的用法
说明:vm.$refs 一个对象,持有已注册过 ref 的所有子组件(或HTML元素) 使用:在 HTML元素 中,添加ref属性,然后在JS中通过vm.$refs.属性来获取 注意:如果获取的是一个 ...
- 【Vue】Vue中的父子组件通讯以及使用sync同步父子组件数据
前言: 之前写过一篇文章<在不同场景下Vue组件间的数据交流>,但现在来看,其中关于“父子组件通信”的介绍仍有诸多缺漏或者不当之处, 正好这几天学习了关于用sync修饰符做父子组件数据双向 ...
- vue 中的translation操作----动态值
在vue中,也会遇见translate的情况,这里顺带也可以带上如何查找页面中的元素的案例. 1.在加载过程中,有会遇见加载顺序先后的问题,然后查找页面元素null的情况,所以在mounted的钩子函 ...
- vue中引用swiper轮播插件
有时候我们需要在vue中使用轮播组件,如果是在vue组件中引入第三方组件的话,最好通过npm安装,从而进行统一安装包管理. 申明:本文所使用的是vue.2x版本. 通过npm安装插件: npm ins ...
- 【转】简单理解Vue中的nextTick
前言: Vue中的nextTick涉及到Vue中DOM的异步更新,感觉很有意思,特意了解了一下.其中关于nextTick的源码涉及到不少知识,很多不太理解,暂且根据自己的一些感悟介绍下nextTick ...
- 在vue中使用echarts图表
在vue中使用echarts图表 转载请注明出处:https://www.cnblogs.com/wenjunwei/p/9815290.html 安装vue依赖 使用npm npm instal ...
- 总结vue中父向子,子向父以及兄弟之间通信的几种方式
子向父方式1:通过props,如例子中子组件test1.vue向父组件App.vue传值 App.vue代码 <template> <div id="app"&g ...
随机推荐
- Linux虚拟机常用命令
参考原文链接:(https://blog.csdn.net/fanyun_01/article/details/51083585) 一.Linux虚拟机常用命令 # virsh list //查看已打 ...
- Luogu5284 十二省联考2019字符串问题(后缀树+拓扑排序)
对反串建SAM弄出后缀树,每个b串通过倍增定位其在后缀树上对应的节点,根据其长度将节点拆开.然后每个a串也找到对应的节点,由该节点向表示a串的节点连边,再把所给的边连上跑拓扑排序即可. #includ ...
- hdu 1698 线段数的区间更新 以及延迟更新
先说说区间更新和单点更新的区别 主要的区别是搜索的过程 前者需要确定一个区间 后者就是一个点就好了 贴上两者代码 void updata(int i)//单点更新 { int l=stu[i].l; ...
- [Vue]axios 发出请求的config
这些是用于发出请求的可用配置选项. 只有url是必需的. 如果未指定方法,请求将默认为GET. { // `url`是将用于请求的服务器URL url: '/user', // `method`是发出 ...
- (六)lucene之其他查询方式(组合查询,制定数字范围、指定字符串开头)
本章使用的是lucene5.3.0 指定数字范围查询 package com.shyroke.test; import java.io.IOException; import java.nio.fil ...
- 11. Java方法的定义与使用
1.1方法的定义 方法是一段可以被重复调用的代码块. 方法的声明: public static 方法返回值 方法名称 ([参数类型 变量...]) 方法体代码: [return 返回值]: 当方法以v ...
- XCode下在不同位置声明变量的用法(转)
XCode下在不同位置声明变量的用法 方式一:直接在.h文件@interface中的大括号中声明. @interface Test : NSObject { NSString *str; // 私有变 ...
- 关于WEB前端开发的思考与感悟
万事开头难. 当我想要认真写一篇文章向大家分享我对前端的认识与感悟的时候,突然就深刻的体会到了这句话确实太有道理了. 最近几年对于web前端的传闻很多,比如人才稀缺,简单易学,待遇丰厚,整体势头发展良 ...
- 【转载】salesforce 零基础开发入门学习(五)异步进程介绍与数据批处理Batchable
salesforce 零基础开发入门学习(五)异步进程介绍与数据批处理Batchable 本篇知识参考:https://developer.salesforce.com/trailhead/for ...
- 注解Annotation原理详解及其应用示例
一.什么是注解 注解也叫元数据,例如我们常见的@Override和@Deprecated,注解是JDK1.5版本开始引入的一个特性,用于对代码进行说明,可以对包.类.接口.字段.方法参数.局部变量等进 ...