12-Vue指令之v-ref
2017-07-21 20:08
501 查看
组件并不是真实的 DOM 节点,而是存在于内存之中的一种数据结构,叫做虚拟 DOM (virtual DOM)
只有当它插入文档后,才会变成真实的 DOM
Vue 中所有的 DOM 变动都现在虚拟 DOM 上发生,然后在将实际变动发生的部分,反映在真实的 DOM 中,这种算法叫 DOM diff 可以极大的提高网页的性能
但是,有时需要从组建获取真实的 DOM 节点,这时就要用到 ref 属性
在上面的代码中,input 作为组件的一个子节点,用于获取用户的输入。这时就必须获取真实的 DOM 节点,虚拟 DOM 节点是拿不到用户输入的数据的。
为了做到这一点,文本框必须有一个 ref 属性,然后 this.refName 就会返回真实的 DOM 节点
需要注意的是,由于 this.refName 属性获取的真实的 DOM 节点,所以必须等到虚拟 DOM 插入文档以后,才能使用这个属性,否则会报错。
因此,最好为组件指定一个事件回调函数,确保只有等到真实 DOM 发生 click 事件之后,才会读取 this.refName 属性
在父组件上注册一个子组件的索引,便于直接访问。不需要表达式。必须提供参数 id ,可以通过父组件的 $ref 对象访问子组件
当 v-ref 和 v-for 一起使用时,注册的值僵尸一个数组,包含所有的子组件,对应于绑定数组,如果 v-for 使用在一个对象上,注册的值将是一个对象,它包含所有的子组件,对应于绑定对象
只有当它插入文档后,才会变成真实的 DOM
Vue 中所有的 DOM 变动都现在虚拟 DOM 上发生,然后在将实际变动发生的部分,反映在真实的 DOM 中,这种算法叫 DOM diff 可以极大的提高网页的性能
但是,有时需要从组建获取真实的 DOM 节点,这时就要用到 ref 属性
render: function() { return ( <div> <input type="text" ref="refName" /> </div> ); }
在上面的代码中,input 作为组件的一个子节点,用于获取用户的输入。这时就必须获取真实的 DOM 节点,虚拟 DOM 节点是拿不到用户输入的数据的。
为了做到这一点,文本框必须有一个 ref 属性,然后 this.refName 就会返回真实的 DOM 节点
需要注意的是,由于 this.refName 属性获取的真实的 DOM 节点,所以必须等到虚拟 DOM 插入文档以后,才能使用这个属性,否则会报错。
因此,最好为组件指定一个事件回调函数,确保只有等到真实 DOM 发生 click 事件之后,才会读取 this.refName 属性
在父组件上注册一个子组件的索引,便于直接访问。不需要表达式。必须提供参数 id ,可以通过父组件的 $ref 对象访问子组件
当 v-ref 和 v-for 一起使用时,注册的值僵尸一个数组,包含所有的子组件,对应于绑定数组,如果 v-for 使用在一个对象上,注册的值将是一个对象,它包含所有的子组件,对应于绑定对象
相关文章推荐
- 12、vue.js 之ref
- 使用use注册Vue全局组件和全局指令
- Vue2.0中 v-for指令中的key用法
- 【12】vue.js — 监听数据变化
- vue-auto-focus: 控制自动聚焦行为的 vue 指令
- Vuejs——(2)Vue生命周期,数据,手动挂载,指令,过滤器
- Vue.js 系列教程 1:渲染,指令,事件
- vue2.0——v-model指令
- Vue常用指令_V-model
- VUE基本指令(v-model,v-html,v-text,v-bind,v-if,v-show,v-for,v-on:click,组件,过滤器)
- Angular1.0与Vue循环指令的区别
- 基于vue的下拉刷新&滚动刷新指令
- 关于vue指令(directive)
- Vue 指令(Directive)
- vue 指令基本使用大全
- Vue的基础认知一---构建环境/v指令的使用
- vue里ref ($refs)用法
- Vue常用指令V-model用法
- vue-ref-$refs用法
- 从零开始学 Web 之 Vue.js(一)Vue.js概述,基本结构,指令,事件修饰符,样式