必威体育Betway必威体育官网
当前位置:首页 > IT技术

Vue与ref属性与refs

时间:2019-08-07 12:14:35来源:IT技术作者:seo实验室小编阅读:54次「手机版」
 

ref

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 部分

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

js部分

    var refoutsidecomponentTem={
        template:"<p class='childComp'><h5>我是子组件</h5></p>"
    };
    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);  // p.childComp vue实例
            }
        }
    });

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

HTML部分

<!--ref在外面的元素上-->
<p id="ref-outside-dom" v-on:click="consoleRef" >
   <component-father>
   </component-father>
   <p  ref="outsideDomRef">ref在外面的元素上</p>
</p>

JS部分

   var refoutsidedomTem={
        template:"<p class='childComp'><h5>我是子组件</h5></p>"
    };
    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在里面的元素上-->
<p id="ref-inside-dom">
    <component-father>
    </component-father>
    <p>ref在里面的元素上</p>
</p>

JS部分

    var refinsidedomTem={
        template:"<p class='childComp' v-on:click='consoleRef'>" +
                       "<h5 ref='insideDomRef'>我是子组件</h5>" +
                  "</p>",
        methods:{
            consoleRef:function () {
                console.log(this);  // p.childComp   vue实例 
                console.log(this.$refs.insideDomRef);  // <h5 >我是子组件</h5>
            }
        }
    };
    var  refinsidedom=new Vue({
        el:"#ref-inside-dom",
        components:{
            "component-father":refinsidedomTem
        }
    });

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

HTML部分

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

JS部分

    Vue.component("ref-inside-dom-quanjv",{
        template:"<p class='insideFather'> " +
                    "<input type='text' ref='insideDomRefAll' v-on:input='showinsideDomRef'>" +
                    "  <p>ref在里面的元素上--全局注册 </p> " +
                  "</p>",
        methods:{
            showinsideDomRef:function () {
                console.log(this); //这里的this其实还是p.insideFather
                console.log(this.$refs.insideDomRefAll); // <input  type="text">
            }
        }
    });

    var refinsidedomall=new Vue({
        el:"#ref-inside-dom-all"
    });

相关阅读

vue父子组件通信(单向、反向、一对一、多对一)

1.父组件向子组件传递信息(单向、一对一)【通过props】2.多个父组件引用同一个子组件(单向、多对一)【通过props】3.子组件向父组件传

vue使用iview的notice

问题描述iview是一个vue的组件库,用起来很好用,但是在使用notice和message的时候发现一个问题,就是按照文档的写法不能调用,文档中的

必不可少的Firefox插件(一)

1. FireBug在众多插件中Firebug无疑是大家最熟悉用的最多的了。Firebug集成在Firefox中,提供了一套开发辅助工具,诸

vue-component

vue-component vue组件简介 组件系统是Vue.js其中一个重要的概念,它提供了一种抽象,让我们可以使用独立可复用的小组件来构建

location的Reload()和location的href等联系和区别

window.location.Reload()和window.location.href等联系和区别 在web开发中经常会遇到页面刷新的系列问题,现在总结如下: 1、js 刷

分享到:

栏目导航

推荐阅读

热门阅读