2
我正在嘗試使用created
生命週期掛鉤在我的組件上設置數據屬性。以下是我的單文件組件。運行此代碼時,我正在控制檯中看到"TypeError: Cannot read property 'summary' of undefined"
。這告訴我該模板正在使用forecastData
作爲data
屬性中聲明的空對象,而不是來自created
的已填充對象。當我完全刪除data
財產時,我看到TypeError: Cannot read property 'currently' of undefined
。顯然,我在這裏錯過了一些基本的東西。如何在VueJS生命週期鉤子內設置數據
<template>
<div>
<p>
<router-link to="/">Back to places</router-link>
</p>
<h2>{{forecastData.currently.summary}}</h2>
<router-link :to="{ name: 'forecast' }">Forecast</router-link>
<router-link :to="{ name: 'alerts' }">Alerts</router-link>
<hr>
<router-view></router-view>
</div>
</template>
<script>
export default {
name: 'CurrentWeather',
data() {
return {
forecastData: {}
}
},
created: function() {
this.$http.get('/api/forecast/boston').then((response) => {
this.forecastData = response.data;
}, (err) => {
console.log(err)
});
}
}
</script>
<style scoped>
</style>
謝謝!已更新爲'forecastData:{currently:{summary:null}}',它可以工作。這是在創建組件時異步獲取和設置數據的正確方法嗎? – MattDionis
@MattDionis你正在做的事情非常好,你只需要注意組件最初安裝時可能不存在的嵌套屬性。 – Bert