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>
paddingTopakan 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.logoutput:
Mengapa tidak this.$refs.stockRatingditentukan jika this.$refsmemiliki stockRatingproperti, 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.logAnda $refs.stockRatingdalam mount () {} properti komponen itu tidak boleh kosong