vue報(bào)錯(cuò):TypeError: Cannot read property 'length' of undefined

TypeError: Cannot read property 'length' of undefined
    at Proxy.render (eval at ./node_modules/cache-loader/dist/cjs.js?
{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"70de47a1-vue-loader-
template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-
loader/dist/cjs.js?!./node_modules/vue-
loader/lib/index.js?!./src/views/Detail/childdetail/DetailGoodNote.vue?
vue&type=template&id=73e21576& (2.js:93), <anonymous>:13:42)

這是因?yàn)楫惒郊虞d數(shù)據(jù)沒有加載完,就在組件使用length屬性,此時(shí)data數(shù)據(jù)為空,導(dǎo)致的錯(cuò)誤

解決的方式:

在最外面的div使用vif做一個(gè)判斷,如果這個(gè)data屬性有值,才執(zhí)行渲染html元素
對象可以使用object.keys(obj)來判斷是否有值

<template>
 <div v-if="Object.keys(Gooddetailnote).length !== 0">  <!-- 判斷是否有值才渲染下面的html -->
    <h1>{{ Gooddetailnote.title }}</h1>
    <div>{{ Gooddetailnote.price }}</div>
    <div>
      <span>
        {{ Gooddetailnote.columns[0] }}
      </span>
      <span>
        {{ Gooddetailnote.columns[1] }}
      </span>
      <span>{{ Gooddetailnote.services[Gooddetailnote.services.length-1].name }}</span>
    </div>
    <div>
      <span v-for="index in Gooddetailnote.services.length-1" :key="index">
        <img :src="Gooddetailnote.services[index].icon" alt="" />
        {{ Gooddetailnote.services[index].name }}
      </span>
    </div>
  </div>
</template>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容