Vue的核心思想是数据驱动视图和组件化,组件是Vue很重要的功能模块,作用是拆分代码,代码复用等。
在Vue中,官方不建议使用原生JS操作DOM元素,但是偶尔实际需要,Vue给出的解决方案是使用ref操作DOM。
打印vm实例对象
这个属性当前只是一个空对象,$refs属性就是操作DOM元素的属性。
举个栗子:在视图层创建h1标签,单击按钮打印h1标签的文本值。
- 想用哪个DOM元素,就在相应元素标签上添加ref属性
- 使用this.$refs.属性名 → 获取元素对象
ref不仅可以操作DOM元素,还可以直接操作组件中的数据和方法。
举个栗子
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>Documenttitle>
head>
<body>
<div id="main" v-cloak>
<h1 ref="h1text">Hello Vueh1>
<login ref="mylogin">login>
<input type="button" value="单击打印h1" @click="btn">
div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js">script>
<script>
var login = {
template : '登录
',
data(){
return{
msg : '子组件内容'
}
},
methods: {
//子组件中声明方法
show(){
console.log('我是子组件的方法')
}
}
}
var vm = new Vue({
el: '#main',
data: {
msg: "Hello world",
},
methods: {
btn() {
//使用this.$refs.h1text即可获取到h1标签
console.log(this.$refs.h1text.innerText)
console.log(this.$refs.mylogin.msg)
this.$refs.mylogin.show()
}
},
components:{
login
}
})
script>
body>
html>
运行效果