详解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 相关文章推荐
将HTML自动转为JS代码
Jun 26 Javascript
jquery 事件冒泡的介绍以及如何阻止事件冒泡
Dec 25 Javascript
只需20行代码就可以写出CSS覆盖率测试脚本
Apr 24 Javascript
JS动态添加与删除select中的Option对象(示例代码)
Dec 20 Javascript
javascript判断复选框是否选中的方法
Oct 16 Javascript
对Angular.js Controller如何进行单元测试
Oct 25 Javascript
vue实现列表的添加点击
Dec 29 Javascript
Vue.js2.0中的变化小结
Oct 24 Javascript
JavaScript实现异步图像上传功能
Jul 12 Javascript
vue单文件组件lint error自动fix与styleLint报错自动fix详解
Jan 08 Javascript
vue watch关于对象内的属性监听
Apr 22 Javascript
jQuery实现二级导航菜单的示例
Sep 30 jQuery
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将字符分解为多个字符串的方法
2014/11/22 PHP
基于Laravel-admin 后台的自定义页面用法详解
2019/09/30 PHP
fix-ie5.js扩展在IE5下不能使用的几个方法
2007/08/20 Javascript
ExtJs的Date格式字符代码
2010/12/30 Javascript
js Form.elements[i]的使用实例
2011/11/13 Javascript
JS获取页面input控件中所有text控件并追加样式属性
2013/02/25 Javascript
Jquery节点遍历next与nextAll方法使用示例
2014/07/22 Javascript
javascript实现浏览器窗口传递参数的方法
2014/09/03 Javascript
原生js三级联动的简单实现代码
2016/06/07 Javascript
详解AngularJS如何实现跨域请求
2016/08/22 Javascript
详解利用 Express 托管静态文件的方法
2017/09/18 Javascript
微信小程序冒泡事件及其阻止方法实例分析
2018/12/06 Javascript
利用JS代码自动删除稿件的普通弹幕功能
2019/09/20 Javascript
JavaScript 正则应用详解【模式、欲查、反向引用等】
2020/05/13 Javascript
JavaScript监听键盘事件代码实现
2020/06/03 Javascript
详解Node.JS模块 process
2020/08/31 Javascript
解决vue侦听器watch,调用this时出现undefined的问题
2020/10/30 Javascript
Vertx基于EventBus发送接受自定义对象
2020/11/16 Javascript
[00:12]DAC2018 天才少年转战三号位,他的SOLO是否仍如昔日般强大?
2018/04/06 DOTA
在Windows服务器下用Apache和mod_wsgi配置Python应用的教程
2015/05/06 Python
Python使用matplotlib绘制正弦和余弦曲线的方法示例
2018/01/06 Python
python中aioysql(异步操作MySQL)的方法
2019/04/11 Python
springboot配置文件抽离 git管理统 配置中心详解
2019/09/02 Python
Python数据可视化:幂律分布实例详解
2019/12/07 Python
推荐技术人员一款Python开源库(造数据神器)
2020/07/08 Python
安装并免费使用Pycharm专业版(学生/教师)
2020/09/24 Python
pandas map(),apply(),applymap()区别解析
2021/02/24 Python
吉列剃须刀美国官网:Gillette美国
2018/07/13 全球购物
UNIX文件名称有什么规定
2013/03/25 面试题
心得体会怎么写
2013/12/30 职场文书
档案检查欢迎词
2014/01/13 职场文书
秋季运动会活动方案
2014/02/05 职场文书
2014超市双十一活动策划方案
2014/09/29 职场文书
党员证明模板
2015/06/19 职场文书
mysql 8.0.24 安装配置方法图文教程
2021/05/12 MySQL
Android Flutter实现3D动画效果示例详解
2022/04/07 Java/Android