详解Vue的ref特性的使用


Posted in Javascript onJanuary 24, 2020

一、ref的基本使用

ref的使用
<!-- `vm.$refs.p`将会是DOM结点 -->
<p ref="p">hello</p>

<!-- `vm.$refs.child`将会是子组件实例 -->
<child-component ref="child"></child-component>

如果在普通的 DOM 元素上使用,引用指向的就是DOM 元素如果用在子组件上,引用就指向组件实例

深入理解$refs

某组件的$refs含有该组件的所有ref,看下面的例子

<div id="app">
  <p ref="p">hello</p>
  <child-component ref="child"></child-component>
</div>

<script>
Vue.component('child-component', {
  template: '<h1>child-component </h1>'
})

let vm = new Vue({
  el: '#app'
})
</script>

详解Vue的ref特性的使用

从上图中我们很容易发现
vm.$refs返回了一个对象,这个对象内有两个成员,包含了vm实例的所有ref
vm.$refs.p是DOM 元素
vm.$refs.child是组件实例

二、实战:通过ref获取子组件data

看下面的例子

<div id="app">
  <counter ref="child1" @change="handleChange"></counter>
  <counter ref="child2" @change="handleChange"></counter>
  <div>{{sum}}</div>
</div>

<script>
// counter组件,实现每点击一次,自增1
Vue.component('counter', {
  template: '<h3 @click="handleClick">{{count}}</h3>',
  data() {
    return {
      count: 0
    }
  },
  methods: {
    handleClick() {
      this.count += 1;
      this.$emit('change')
    }
  }
})

let vm = new Vue({
  el: '#app',
  data: {
    sum: 0
  },
  methods: {
    handleChange() {
      this.sum = this.$refs.child1.count + this.$refs.child2.count // 使用refs获取子组件的数据
    }
  }
})
</script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript中eval函数的使用方法与示例
Apr 09 Javascript
JS方法调用括号的问题探讨
Jan 24 Javascript
js post提交调用方法
Feb 12 Javascript
深入学习jQuery Validate表单验证(二)
Jan 18 Javascript
浅谈Node.js:Buffer模块
Dec 05 Javascript
jQuery Ajax File Upload实例源码
Dec 12 Javascript
jQuery中select与datalist制作下拉菜单时的区别浅析
Dec 30 Javascript
微信小程序canvas实现刮刮乐效果
Jul 09 Javascript
微信小程序实现提交input信息到后台的方法示例
Jan 19 Javascript
Vue 实现前进刷新后退不刷新的效果
Jun 14 Javascript
Vue Extends 扩展选项用法完整实例
Sep 17 Javascript
vue v-for 点击当前行,获取当前行数据及event当前事件对象的操作
Sep 10 Javascript
JavaScript对象原型链原理解析
Jan 22 #Javascript
Node.js学习之内置模块fs用法示例
Jan 22 #Javascript
ES6学习笔记之字符串、数组、对象、函数新增知识点实例分析
Jan 22 #Javascript
ES6学习笔记之let与const用法实例分析
Jan 22 #Javascript
vue中js判断长时间不操作界面自动退出登录(推荐)
Jan 22 #Javascript
Vue设置长时间未操作登录自动到期返回登录页
Jan 22 #Javascript
JavaScript设计模型Iterator实例解析
Jan 22 #Javascript
You might like
php 验证码实例代码
2010/06/01 PHP
PHP清除字符串中所有无用标签的方法
2014/12/01 PHP
配置eAccelerator和XCache扩展来加速PHP程序的执行
2015/12/22 PHP
详解js异步文件加载器
2016/01/24 PHP
对比PHP对MySQL的缓冲查询和无缓冲查询
2016/07/01 PHP
php post换行的方法
2020/02/03 PHP
分享几个超级震憾的图片特效
2012/01/08 Javascript
限制textbox或textarea输入字符长度的JS代码
2013/10/16 Javascript
angularjs创建弹出框实现拖动效果
2020/08/25 Javascript
温习Javascript基础语法之词法结构
2016/05/31 Javascript
利用JS实现点击按钮后图片自动切换的简单方法
2016/10/24 Javascript
[原创]JavaScript语法高亮插件highlight.js用法详解【附highlight.js本站下载】
2016/11/01 Javascript
微信小程序 配置文件详细介绍
2016/12/14 Javascript
JS出现失效的情况总结
2017/01/20 Javascript
详解nodejs中的process进程
2017/03/19 NodeJs
JavaScript登录记住密码操作(超简单代码)
2017/03/22 Javascript
基于打包工具Webpack进行项目开发实例
2018/05/29 Javascript
使用jQuery给Table动态增加行、清空table的方法
2018/09/05 jQuery
超轻量级的js时间库miment使用解析
2019/08/02 Javascript
[02:28]DOTA2 2015国际邀请赛中国区预选赛首日现场百态
2015/05/26 DOTA
Python自定义函数的创建、调用和函数的参数详解
2014/03/11 Python
python类继承用法实例分析
2015/05/27 Python
使用pandas实现csv/excel sheet互相转换的方法
2018/12/10 Python
Python运行提示缺少模块问题解决方案
2020/04/02 Python
python实现五子棋程序
2020/04/24 Python
哈工大自然语言处理工具箱之ltp在windows10下的安装使用教程
2020/05/07 Python
如何在Python对Excel进行读取
2020/06/04 Python
Python定义一个Actor任务
2020/07/29 Python
Python3爬虫关于识别检验滑动验证码的实例
2020/07/30 Python
如何使用Django Admin管理后台导入CSV
2020/11/06 Python
pymysql模块使用简介与示例
2020/11/17 Python
详解HTML5 LocalStorage 本地存储
2016/12/23 HTML / CSS
HTML5如何实现元素拖拽
2016/03/11 HTML / CSS
工作自荐信
2013/12/11 职场文书
护士自我鉴定总结
2014/03/24 职场文书
工作疏忽检讨书500字
2014/10/26 职场文书