鍍金池/ 問答/HTML/ vue渲染成功,但是控制臺報錯

vue渲染成功,但是控制臺報錯

<div class="serviceType" v-if="payIndex===0 && cbList[shipIndex].partnerName !== undefined" v-html="cbList[shipIndex].partnerName" @click="shipShow"></div>
<div class="serviceType" v-else-if="payIndex===0 && cbList[shipIndex].partnerName === undefined" v-html="cbList[shipIndex].senderName" @click="shipShow"></div>
<div class="serviceType" v-else-if="payIndex===1" v-html="shipType[shipIndex].partnerName" @click="shipShow"></div>

渲染成功了,但是控制臺報錯

clipboard.png

cbList和shipType初始化是空數(shù)組,在mounted中賦值,請大神指導(dǎo)一下,謝謝

回答
編輯回答
背叛者

這個問題一般是json數(shù)據(jù)是由后臺請求提供,但在頁面加載的時候,還沒有這個對象。
解決辦法有幾個,各有優(yōu)缺點:
1.一般在mounted方法中獲取數(shù)據(jù)的,采用同步,等數(shù)據(jù)拿到后,再加載頁面,可以防止報錯,頁面出現(xiàn)腳本{{XXX}}等。缺點是:數(shù)據(jù)大會影響頁面加載的速度。
2.一般報錯都是對data項,動態(tài)新增屬性,可以這樣定義,如下圖,防止出現(xiàn)undefined.屬性的情況出現(xiàn),就不會報錯了。缺點是:每個屬性都要先寫好,煩,Vue.set方法等于廢了。
clipboard.png
3.用一個標示,放在data根節(jié)點下面 ,設(shè)isload=false,當數(shù)據(jù)拿到后,設(shè)置isload=true
頁面顯示的時候,在最外面的根節(jié)點html標簽上加上 v-if='isload'

2017年1月31日 15:19
編輯回答
蔚藍色

這種一般都是嘗試訪問一個undefined的某個屬性暴露的錯誤,推薦使用條件渲染以及正向反查 ,保證訪問的時候這個對象真實存在,

2017年9月26日 08:44
編輯回答
呆萌傻
<div class="serviceType" v-if="payIndex===0 && cbList[shipIndex] && cbList[shipIndex].partnerName !== undefined" v-html="cbList[shipIndex]?cbList[shipIndex].partnerName:''" @click="shipShow"></div>
<div class="serviceType" v-else-if="payIndex===0 && cbList[shipIndex] && cbList[shipIndex].partnerName === undefined" v-html="cbList[shipIndex]?cbList[shipIndex].senderName:''" @click="shipShow"></div>
<div class="serviceType" v-else-if="payIndex===1" v-html="shipType[shipIndex]?shipType[shipIndex].partnerName:''" @click="shipShow"></div>
2018年1月29日 05:50