[英]How to use v-if, v-else inside of v-for properly in Vuejs?
<template> <div> <div v-for="box in boxes":key="box.id"> <BaseAccordian> <template v-slot:title>{{ box.name }}</template> <template v-slot:content> <div v-for="paint in paints":key="paint.id" class="line"> <div v-if=" matchingdata.some( (m) => m.boxid == box.boxid && m.paintid == paint.paintid ) " > <StatusComponent:box="box":paint="paint":matchingdata="matchingdata" /> </div> <!-- <div v-else>no data found</div> --> </div> </template> </BaseAccordian> </div> </div> </template>
當我單擊每個復選框時,我正在從 box、paint 數組中加載相關數據。 通過檢查匹配數據。 大批。
現在,我想顯示,如果沒有找到復選框的數據 onclick,我想顯示一條消息為“找不到數據”
下面代碼的問題是,如果我將 v-if 放在頂部,將 v-for 和 v-else 數據放在最后,那么只有很少的數據顯示
matchingdata.some()
您可以在v-for
v-if
中使用matchingdata.some()
,它會檢查是否可以找到任何顏料。 在文本的底部放置一個v-else
。
請參閱下面的修復:
<template>
<div>
<div v-for="box in boxes" :key="box.id">
<BaseAccordian>
<template v-slot:title>{{ box.name }}</template>
<template v-slot:content>
<template v-if="
matchingdata.some(
(m) => m.boxid == box.boxid && paints.find( (paint) => m.paintid == paint.paintid )
)
"
>
<div v-for="paint in paints" :key="paint.id" class="line">
<div
v-if="
matchingdata.some(
(m) => m.boxid == box.boxid && m.paintid == paint.paintid
)
"
>
<StatusComponent
:box="box"
:paint="paint"
:matchingdata="matchingdata"
/>
</div>
</div>
</template>
<div v-else>no data found</div>
</template>
</BaseAccordian>
</div>
</div>
</template>
我將其粘貼到您的代碼沙箱中,它使消息每個框只出現一次。
相關部分是使用paints.find
預先檢查所有油漆:
matchingdata.some(
(m) => m.boxid == box.boxid && paints.find( (paint) => m.paintid == paint.paintid )
)
文檔:
v-if
檢查ok
和not ok
應該寫在外部 for 循環之前
(在這一行之前<div v-for="paint in paints":key="paint.id" class="line">
)
所以整個代碼應該是這樣的:
<div v-if="your data existence checking .....">
<div v-for="paint in paints" :key="paint.id" class="line">
<div
v-if="
matchingdata.some(
(m) => m.boxid == box.boxid && m.paintid == paint.paintid
)
"
>
<StatusComponent
:box="box"
:paint="paint"
:matchingdata="matchingdata"
/>
</div>
</div>
</div>
<div v-else>no data found</div>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.