ไม่พบ Vue.js $ ref
ฉันพยายามตั้งค่าช่องว่างภายในขององค์ประกอบแบบไดนามิกโดยใช้สไตล์อินไลน์ตามความสูงของพาเรนต์ สำหรับสิ่งนี้ฉันใช้:
<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
จะเป็นคุณสมบัติที่คำนวณได้ อย่างไรก็ตามก่อนที่จะคำนวณฉันต้องเข้าถึง $ ref ขององค์ประกอบหลัก ( stockRating
) แต่ไม่พบในคุณสมบัติที่คำนวณแม้ว่าวัตถุ $ refs ดูเหมือนจะมีอยู่ก็ตาม
paddingTop : function(){
console.log(this.$refs); console.log(this.$refs.stockRating);
/*computation here*/
}
console.log
การส่งออกเป็น:

เหตุใดจึงthis.$refs.stockRating
ไม่ได้กำหนดว่าthis.$refs
มีstockRating
คุณสมบัติและฉันเห็นว่ามีองค์ประกอบที่ถูกต้องด้วย ฉันจะแก้ไขปัญหานี้ได้อย่างไร
คำตอบ
คุณต้องบอก vue ว่า DOM พร้อมและติดตั้งส่วนประกอบแล้ว
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>
ดี $ refs.stockRating ของคุณจะถูกกำหนดและมีอยู่ แต่ก็จะไม่ได้มีอยู่จนกว่าส่วนประกอบที่ติดตั้งตามที่อธิบายไว้ที่นี่
ผมไม่ได้ลอง แต่ผมคิดว่าถ้าคุณพยายามที่จะconsole.log
ของคุณ$refs.stockRating
ภายในติด () {} คุณสมบัติองค์ประกอบมันไม่ควรจะเป็นที่ว่างเปล่า