Rumah > Soal Jawab > teks badan
Mendapat ralat Tidak boleh membaca sifat undefined (membaca '$refs') walaupun saya mempunyai rujukan dalam templat. Adakah ini bermakna saya perlu menggunakan cangkuk pelekap Vue?
<div class="input-wrapper"> <input type="text" id="phone" placeholder="(555) 555-5555" ref="input"/> </div> <script> this.$refs.input.addEventLis tener('input', function () { // some code }); </script>
P粉7522900332023-11-08 13:08:12
Dalam komponen Vue 的根内部,在 Vue 2 和 Vue 3 中,
this
是 未定义
:
Semak di sini. . p>
Vue Rujukan Templat hanya boleh diakses dalam mana-mana cangkuk atau kaedah yang berlaku selepas komponen dipasang dan sebelum ia dinyahpasang.
Ini bermakna yang terawal anda boleh rujuk this.$refs
ini.$refs terletak dipasang. Terkini terletak sebelum Nyahlekap . Anda juga boleh mengaksesnya dalam mana-mana cangkuk atau kaedah yang berlaku antara dua detik tersebut.
Memandangkan anda cuba menambah pendengar acara pada HTMLInputElement, saya syorkan menggunakan arahan v-on, yang akan menambah pendengar acara secara automatik pada lekap dan mengalih keluarnya apabila dinyahlekap.
Dalam kes anda:
sssccc
Dengan cara ini, anda harus tahu bahawa this
ini fungsi biasa tidak mempunyai akses kepada konteks komponen, melainkan ia adalah fungsi anak panah:
export default { mounted() { this.$refs.input.addEventListener('input', function() { /* * Here `this` is the context of the current function, you can't * access methods, computed, data or props of the component. * You'd need to make it an arrow function to access the component scope */ }) } }
Dan dalam mana-mana kaedah (contohnya: myFn
),this
myFn di atas),