• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
ellaha
博客园    首页    新随笔    联系   管理    订阅  订阅
vue之使用ref获取DOM元素和组件引用
  • 说明: vm.$refs 是一个对象,拥有已注册过 ref 的所有元素(或者子组件)
  • 使用: 在HTML元素中,添加ref属性,然后在JS中通过vm.$refs.属性来获取
  • 注意: 如果获取的是一个子组件,通过 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实例身上的属性,如图: 这里就是所有 注册过 ref 的元素

调用子组件的引用

 

<!DOCTYPE html>
<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: '<h1>登录组件</h1>',
            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>

点击按钮,所得结果:

 

posted on 2021-04-25 22:20  ellaha  阅读(890)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3