Vue.js中ref ($refs)用法举例总结及应注意的坑

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue.js中ref ($refs)用法举例总结及应注意的坑相关的知识,希望对你有一定的参考价值。

参考技术A 看Vue.js文档中的ref部分,自己总结了下ref的使用方法以便后面查阅。

html 部分

js部分

HTML部分

JS部分

HTML部分

JS部分

HTML部分

JS部分

1、如果通过v-for 遍历想加不同的ref时记得加 : 号,即 :ref =某变量 ;
这点和其他属性一样,如果是固定值就不需要加 : 号,如果是变量记得加 : 号

2、通过 :ref =某变量 添加ref(即加了 : 号) ,如果想获取该ref时需要加 [0] ,如 this.$refs[refsArrayItem] [0] ;如果不是 :ref =某变量 的方式而是 ref =某字符串 时则不需要加,如 this.$refs[refsArrayItem]

3、想在element ui 对话框打开后取dom时,应该使用 $nextTick ,而不是直接使用 this.$refs. imgLocal2 :

Vue.js中ref ($refs)用法举例总结

原文地址:http://www.cnblogs.com/xueweijie/p/6907676.html

 

<div id="app">
    <input type="text" ref="input1"/>
    <button @click="add">添加</button>
</div>
技术分享图片
技术分享图片
<script>
new Vue({
    el: "#app",
    methods:{
    add:function(){
        this.$refs.input1.value ="22"; //this.$refs.input1  减少获取dom节点的消耗
        }
    }
})
</script>
技术分享图片
技术分享图片

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

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

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

 

以下内容:

作者:该帐号已被查封
链接:http://www.jianshu.com/p/3bd8a2b07d57
來源:简书

看Vue.js文档中的ref部分,自己总结了下ref的使用方法以便后面查阅。

一、ref使用在外面的组件上

HTML 部分

1 <div id="ref-outside-component" v-on:click="consoleRef">
2     <component-father ref="outsideComponentRef">
3     </component-father>
4     <p>ref在外面的组件上</p>
5 </div>

 

js部分

技术分享图片
 1     var refoutsidecomponentTem={
 2         template:"<div class=‘childComp‘><h5>我是子组件</h5></div>"
 3     };
 4     var  refoutsidecomponent=new Vue({
 5         el:"#ref-outside-component",
 6         components:{
 7             "component-father":refoutsidecomponentTem
 8         },
 9         methods:{
10             consoleRef:function () {
11                 console.log(this); // #ref-outside-component     vue实例
12                 console.log(this.$refs.outsideComponentRef);  // div.childComp vue实例
13             }
14         }
15     });
技术分享图片

 

二、ref使用在外面的元素上

HTML部分

技术分享图片
1 <!--ref在外面的元素上-->
2 <div id="ref-outside-dom" v-on:click="consoleRef" >
3     <component-father>
4     </component-father>
5     <p  ref="outsideDomRef">ref在外面的元素上</p>
6 </div>
技术分享图片

 

JS部分

技术分享图片
 1    var refoutsidedomTem={
 2         template:"<div class=‘childComp‘><h5>我是子组件</h5></div>"
 3     };
 4     var  refoutsidedom=new Vue({
 5         el:"#ref-outside-dom",
 6         components:{
 7             "component-father":refoutsidedomTem
 8         },
 9         methods:{
10             consoleRef:function () {
11                 console.log(this); // #ref-outside-dom    vue实例
12                 console.log(this.$refs.outsideDomRef);  //   <p> ref在外面的元素上</p>
13             }
14         }
15     });
技术分享图片

三、ref使用在里面的元素上---局部注册组件

HTML部分

技术分享图片
1 <!--ref在里面的元素上-->
2 <div id="ref-inside-dom">
3     <component-father>
4     </component-father>
5     <p>ref在里面的元素上</p>
6 </div>
技术分享图片

JS部分

技术分享图片
 1     var refinsidedomTem={
 2         template:"<div class=‘childComp‘ v-on:click=‘consoleRef‘>" +
 3                        "<h5 ref=‘insideDomRef‘>我是子组件</h5>" +
 4                   "</div>",
 5         methods:{
 6             consoleRef:function () {
 7                 console.log(this);  // div.childComp   vue实例 
 8                 console.log(this.$refs.insideDomRef);  // <h5 >我是子组件</h5>
 9             }
10         }
11     };
12     var  refinsidedom=new Vue({
13         el:"#ref-inside-dom",
14         components:{
15             "component-father":refinsidedomTem
16         }
17     });
技术分享图片

 

四、ref使用在里面的元素上---全局注册组件

HTML部分

1 <!--ref在里面的元素上--全局注册-->
2 <div id="ref-inside-dom-all">
3     <ref-inside-dom-quanjv></ref-inside-dom-quanjv>
4 </div>
 

JS部分

   
技术分享图片
 1  Vue.component("ref-inside-dom-quanjv",{
 2         template:"<div class=‘insideFather‘> " +
 3                     "<input type=‘text‘ ref=‘insideDomRefAll‘ v-on:input=‘showinsideDomRef‘>" +
 4                     "  <p>ref在里面的元素上--全局注册 </p> " +
 5                   "</div>",
 6         methods:{
 7             showinsideDomRef:function () {
 8                 console.log(this); //这里的this其实还是div.insideFather
 9                 console.log(this.$refs.insideDomRefAll); // <input  type="text">
10             }
11         }
12     });
13
14     var refinsidedomall=new Vue({
15         el:"#ref-inside-dom-all"
16     });



以上是关于Vue.js中ref ($refs)用法举例总结及应注意的坑的主要内容,如果未能解决你的问题,请参考以下文章

vue.js中ref和$refs的使用及示例讲解

Vue.js 源码分析 ref属性详解

vue中$refs的用法及作用详解

在 Vue.js 中,如何选择组件的节点元素? $refs 可能吗?

C# out ref 用法总结

访问 Vue JS 实例监视对象中的 $refs 数组