Vue与ref属性与refs

- 日理万妓 2022-05-24 11:04 346阅读 0赞

ref 被用来给DOM元素或子组件注册引用信息。引用信息会根据父组件的 $refs 对象进行注册。如果在普通的DOM元素上使用,引用信息就是元素; 如果用在子组件上,引用信息就是组件实例

注意:只要想要在Vue中直接操作DOM元素,就必须用ref属性进行注册

这里写图片描述

实例:

这里写图片描述

这里写图片描述

这里为了在create的时候引用DOM元素,先在DOM中使用ref标签进行了注册,然后便可以通过’this.$refs’再跟注册时的名称来引用DOM元素了

第二部分

vue中的 ref 和 $refs

1089028-20171027145813726-1898103104.png

1089028-20171027145850414-1743291129.png

1089028-20171027150137680-2114301928.png

如图,ref 被用来给元素或子组件注册引用信息。引用信息将会注册在父组件的 $refs 对象上。如果在普通的 DOM 元素上使用,引用指向的就是 DOM 元素;如果用在子组件上,引用就指向组件实例:

在上面的例子中,input的引用信息为input1 ,$refs 是所有注册过的ref的一个集合,

console.log(this.$refs.input1)//
console.log(document.getElementById(‘input1’))//

这两种方法获得的都是Dom节点,而$refs相对document.getElementById的方法,会减少获取dom节点的消耗。

1089028-20171027150901476-62482316.png

1089028-20171027151919601-317290673.png

1089028-20171027152155445-845809516.png

1089028-20171027152130836-1205775574.png

ref和v-for在一起的情况

1089028-20171027153826242-1085260214.png

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

此时的$refs

1089028-20171027154023508-47990899.png

1089028-20171027154105351-58091912.png

第三部分:

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

HTML 部分

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

js部分

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

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

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

JS部分

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

  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",{ 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.insideFather console.log(this.$refs.insideDomRefAll); // <input type="text"> } } }); var refinsidedomall=new Vue({ el:"#ref-inside-dom-all" });

发表评论

表情:
评论列表 (有 0 条评论,346人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Vue- ref属性

    ref属性 被用来给元素或者子组件注册引用信息(id的替代者) 通过案例来演示\_ref属性 1 编写案例 如图:有一个按钮,点击按钮可以输出dom元素 备注

    相关 Vue- ref属性

    ref属性 被用来给元素或者子组件注册引用信息(id的替代者) 通过案例来演示\_ref属性 1 编写案例 如图:有一个按钮,点击按钮可以输出dom元素 备注

    相关 14-ref属性

    ref属性 ref属性被用来给元素或子组件注册引用信息(id的替代者),避免在vue中使用`document.getElementById`。 应用在html标签上时,

    相关 Vueref和:ref

    前者代表字符串xxx,后者代表变量xxx。 不加冒号表示后面是个字符串,否则表示后面是个js表达式。 ![在这里插入图片描述][watermark_type_ZmFuZ3

    相关 Vueref属性refs

    ref 被用来给DOM元素或子组件注册引用信息。引用信息会根据父组件的 $refs 对象进行注册。如果在普通的DOM元素上使用,引用信息就是元素; 如果用在子组件上,引用信息