Vue中 $refs 获取DOM元素和组件的引用

  1. 说明: vm.$refs 是一个对象,拥有已注册过 ref 的所有元素(或者子组件)
  2. 使用: 在HTML元素中,添加ref属性,然后在JS中通过vm.$refs.属性来获取
  3. 注意: 如果获取的是一个子组件,通过 ref 就能获取到子组件中的 data 和 methods

添加 ref 属性

  <div id='app'>
        <input type="button" value="获取元素" @click="getElement" ref="mybtn">
        <h3 ref="myh3">哈哈哈哈哈h3>
        <hr>
        <login ref="mylogin">login>
    div>

在控制台输出,vm实例身上的属性,如图:
Vue中 $refs 获取DOM元素和组件的引用_第1张图片
这里就是所有 注册过 ref 的元素。


调用子组件的引用


<html lang='en'>

<head>
    <meta charset='UTF-8'>
    <meta name='viewport' content='width=device-width, initial-scale=1.0'>
    <meta http-equiv='X-UA-Compatible' content='ie=edge'>
    <title>ref获取DOM元素和组件的引用title>
    <script src='../lib/vue.js'>script>
head>

<body>
    <div id='app'>
        <input type="button" value="获取元素" @click="getElement" ref="mybtn">
        <h3 ref="myh3">哈哈哈哈哈h3>
        <hr>
        <login ref="mylogin">login>
    div>
    
    <script>
        var login = {
            template: '

登录组件

'
, data() { return { msg: 'son msg' } }, methods: { show() { console.log('调用了子组件的方法') } } } var vm = new Vue({ el: '#app', data: {}, methods: { getElement() { // ref 是英文单词 【reference】 值类型 和 引用类型 (referenceError 引用错误) console.log(this.$refs.myh3.innerText); //获取h3的文本内容 console.log(this.$refs.mylogin.msg); //调用子组件的数据 this.$refs.mylogin.show(); //调用子组件的方法 } }, components: { login: login } })
script> body> html>

点击按钮,所得结果:
Vue中 $refs 获取DOM元素和组件的引用_第2张图片

你可能感兴趣的:(前端,JavaScript,Vue.js)