参考书籍《Vue.js快跑:构建触手可及的高性能Web应用》第1章 Vue.js基础-----1-16使用ref直接访问元素

有时你会发现需要直接访问一个DOM元素;也许你正在使用一个不支持Vue的第三方库,或者希望做一些Vue自身不能完全处理的事情。可以使用ref直接访问元素,而不需要使用querySelector或者其他选择DOM节点的原生方法。

使用ref访问一个元素,只需要将这个元素的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直接访问元素</title>
</head>

<body>
    <div id="app">
        <input type="text" ref="ipt" id="ipt">
        <button @click="add">vue获取</button>
        <button onclick="req()">js获取</button>
    </div>
    <script src="https://unpkg.com/vue"></script>
    <script>
        let vue = new Vue({
            el: "#app",
            methods: {
                add(){
                    console.log(this.$refs.ipt);
                    console.log(document.getElementById("ipt"));
                }
            }
        })

        function req(){
            console.log(document.getElementById("ipt"));
            console.log(vue.$refs.ipt);
        }
    </script>
</body>

</html>

这样,在JavaScript中,这个元素会被注册在父组件的 $refs 对象上,对应的键名就是为元素的ref属性设置的值。在这个例子中,在vue对象中可以使用this.$ref.ipt访问这个元素。vue对象外部可以通过声明的vue对象获取。

原文地址:https://www.cnblogs.com/cuilichao/p/14900267.html