美文网首页IT@程序员猿媛
使用ref获取DOM元素和组件

使用ref获取DOM元素和组件

作者: 小丘啦啦啦 | 来源:发表于2019-04-27 15:40 被阅读2次

一、获取DOM元素
虽然可以通过原生js操作获取到DOM元素,但是Vue等框架已经不推荐自己操作DOM了,都扔给框架就行了。
可以给元素增加ref属性,则vue实例身上的$refs对象就会有此DOM元素数据,由此元素ref属性值作为key取到。

<html>

<head>
    <meta charset="utf-8">
    <title></title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>

<body>
    <div id='app'>
        <input type="button" value="获取元素" @click = "getElm">
        <!-- 给元素加个ref属性 -->
        <h3 ref="myh3">yoyo啦啦啦</h3>
    </div>
    <script>
        var vm = new Vue({
            el: "#app",
            data: {
                
            },
            methods: {
                getElm(){
                    //vue实例的$refs对象即有此DOM元素数据
                    console.log(this.$refs.myh3.innerHTML);
                }
            }
        });
    </script>
</body>

</html>

点击按钮。


即可以通过此种方式获取到DOM元素。

二、获取组件
也可以标签引用组件的时候给组件加上ref属性,则Vue实例的$refs中也会有此组件的引用。可以通过ref属性对应值作为key取到该组件,获取此组件data数据和methods方法。

<html>

<head>
    <meta charset="utf-8">
    <title></title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>

<body>
    <div id='app'>
        <input type="button" value="获取元素" @click = "getElm">
        <!-- 给元素加个ref属性 -->
        <login ref="mycom"></login>
    </div>
    <script>
        var login ={
            template:'<h3>登陆组件</h3>',
            data(){
                return {
                    msg:'子组件数据'
                }
            },
            methods:{
                logChild(){
                    console.log('执行了子组件方法');
                }
            }
        }
        var vm = new Vue({
            el: "#app",
            data: {
                
            },
            methods: {
                getElm(){
                    //vue实例的$refs对象即有此组件引用
                    //获取子组件数据
                    console.log(this.$refs.mycom.msg);
                    //调用子组件方法
                    this.$refs.mycom.msg
                }
            },
            components:{
                login
            }
        });
    </script>
</body>

</html>

点击按钮。


从上可以看出,也可以通过这种方法,实现子组件向父组件传递数据。

相关文章

网友评论

    本文标题:使用ref获取DOM元素和组件

    本文链接:https://www.haomeiwen.com/subject/tgbggqtx.html