摘要:我顯示了一些我從API獲得的數據。由於調用的異步性質和各種刷新率,我不能認爲當我從HTML代碼調用它時,我的Vue
對象中的data
將可用。 有沒有辦法處理Vue.js中的缺失數據?如何處理(現在)缺失的數據?
詳細說明:
下面的代碼工作因爲message.text
在Vue
實例的編譯時的定義(輸出hello world
):
var vm = new Vue({
el: '#root',
data: {
message: {
text: "hello"
}
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.0.3/vue.js"></script>
<div id="root">
<span>{{message.text}}</span>
<span>world</span>
</div>
如果message
被定義通過外部行動(a調用例如一個API),那麼下面的代碼將會失敗:
var vm = new Vue({
el: '#root',
data: {
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.0.3/vue.js"></script>
<div id="root">
<span>{{message.text}}</span>
<span>world</span>
</div>
我今天使用的解決方案是爲將之前被渲染的data
位佔位符(默認值)我有機會用真實值更新它們,但是當data
變得複雜時,這會使我的代碼變得複雜(並且醜化)我的代碼。
有沒有辦法指示Vue.js在達到data
未定義(尚未)定義的元素時自動失敗?
謝謝你,這是一個好主意,但我有很多這樣的數據(其初始渲染後初始化) – WoJ
會增添了不少的「物流」代碼@WoJ如果你知道消息數據的結構,你可以初始化爲空字符串,並且不需要任何「後勤」代碼來防止這個錯誤。看到我更新的答案。 – Saurabh
這就是我今天所做的(我在問題結尾處提到過),並且想避免它,因爲它會創建一大堆沒用的數據(從邏輯/代碼的可讀性角度來講) 。我希望我能以某種方式隱藏它。我知道傳入數據的結構,所以它會或多或少地等同於複製我所得到的模式(使用默認的空值/空值) – WoJ