Vue.js中$refs{}如何获取DOM元素
如果我们想获取DOM元素,一般使用js中的document.querySelector来获取这个dom节点,然后在获取元素的值,现在Vue提供给我们一种更便捷的方式来获取DOM元素-----$refs{}
$refs{}----获取标签元素
说明:一个对象,持有注册过 ref attribute 的所有 DOM 元素和组件实例
作用:减少DOM操作
用法:
原生方法
此例是利用原生jsdocument.getElementById()获取元素
<div id="app">
<input type="button" value="获取元素" @click='btn'>
<h3 id="myh3">哈哈, 今天天气不错</h3>
</div>
<script>
var vm= new Vue({
el:'#app',
data:{},
methods: {
btn(){
console.log(document.getElementById('myh3').innerText);
}
}
})
console.log(vm);
</script>
效果如下:

我们将vm实例输出,查看这个对象

vm.$refs方法获取
1.给元素定义ref=",输出vm实例
<h3 id="myh3" ref="myh3">哈哈, 今天天气不错</h3>

2.在实例的方法中输出,
获取元素方法如下:
console.log(this.$refs.myh3);
获取内容方法如下:
console.log(this.$refs.myh3.innertext); //或者 console.log(this.$refs.myh3.innerHtml);

$refs{}----获取Vue组件
查看vm实例:
<div id="app">
<input type="button" value="获取元素" @click='btn'>
<login ref='mylogin'></login>
</div>
<script>
var login={
template:'<h1>登录组件</h1>',
data() {
return {
msg:'son msg'
}
},
methods: {
show(){
console.log('调用了子组件的方法');
}
},
}
var vm= new Vue({
el:'#app',
data:{},
methods: {
btn(){
}
},
components:{
login
}
})
console.log(vm);
</script>

利用$refs获取子组件的方法:
console.log(this.$refs.mylogin);

利用$refs获取子组件内容的方法:
this.$refs.mylogin.show();

利用$refs获取子组件中的data:
console.log(this.$refs.mylogin.msg);

总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Vue3的provide和inject实现多级传递的原理解析
Vue3中的provide和inject函数通过原型链实现数据的多级传递,父组件使用provide注入数据,子组件和后代组件通过inject获取这些数据,在创建组件实例时,子组件会继承父组件的provides属性对象,介绍Vue3的provide和inject实现多级传递的原理,需要的朋友可以参考下2024-12-12
vue.js表单验证插件(vee-validate)的使用教程详解
这篇文章主要介绍了vue.js表单验证插件(vee-validate)的使用,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下2019-05-05
Vue 数值改变页面没有刷新的问题解决(数据改变视图不更新的问题)
这篇文章主要介绍了Vue 数值改变页面没有刷新的问题解决(数据改变视图不更新的问题),本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2023-09-09


最新评论