Vue.js $ ref tidak ditemukan
Saya mencoba untuk secara dinamis mengatur padding elemen menggunakan gaya inline, berdasarkan ketinggian induknya. Untuk ini saya menggunakan:
<div class="stock-rating positive" ref="stockRating">
<div class="stock-rating-start-end" v-bind:style="{ paddingTop: paddingTop }">
<div>{{ rating.value_start }}</div>
<div>to</div>
<div>{{ rating.value_end }}</div>
</div>
</div>
paddingTop
akan menjadi properti yang dihitung. Namun, sebelum saya menghitungnya, saya harus benar-benar mengakses $ ref dari elemen induk ( stockRating
). Tapi, itu tidak ditemukan di properti yang dihitung, meskipun objek $ refs terlihat memuatnya.
paddingTop : function(){
console.log(this.$refs); console.log(this.$refs.stockRating);
/*computation here*/
}
The console.log
output:

Mengapa tidak this.$refs.stockRating
ditentukan jika this.$refs
memiliki stockRating
properti, dan saya melihatnya berisi elemen yang benar juga? Bagaimana cara mengatasi ini?
Jawaban
Anda harus memberi tahu vue bahwa DOM telah siap dan komponen telah dipasang.
new Vue({
el: "#app",
computed: {
itemRef() {
console.log(this.$refs.item) return this.ready ? this.$refs.item : false
}
},
data: () => {
return {
ready: false
};
},
mounted() {
this.ready = true;
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id='app'>
<div ref="item" class="item">
{{itemRef}}
</div>
</div>
Baik $ refs.stockRating Anda didefinisikan DAN ada tetapi tidak akan ada sampai komponen dipasang seperti yang dijelaskan di sini .
Aku tidak mencobanya tapi saya kira bahwa jika Anda mencoba untuk console.log
Anda $refs.stockRating
dalam mount () {} properti komponen itu tidak boleh kosong