国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

如何在Vuejs中正確使用v-for中的v-if、v-else?
P粉021708275
P粉021708275 2024-03-26 12:50:05
0
2
571

<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>

當我單擊每個複選框時,我正在從框、繪製數(shù)組載入相關資料。透過檢查匹配數(shù)據(jù)。數(shù)組。

現(xiàn)在,我想顯示,如果單擊複選框時未找到數(shù)據(jù),我想顯示一條訊息“未找到數(shù)據(jù)”

下面程式碼的問題是,如果我將 v-if 放在頂部,將 v-for 和 v-else 資料放在最後,那麼只顯示很少的資料

P粉021708275
P粉021708275

全部回覆(2)
P粉377412096

v-for 正在為「boxes」中的每個「box」進行渲染,因此對於每個框,您應該得到一個:


  
  

對於 Paints 中的每個 Paint,這應該會為每個盒子內(nèi)的每個 Paint 渲染一個 div。

v-ifv-else-ifv-else 將根據(jù)其中包含的謂詞有條件地渲染它們的區(qū)塊。我不確定數(shù)組matchingdata 來自您的範例中的位置,但如果它包含具有與box.bodipaint.paintidpaint. paintid 符合的屬性boxypaintid 的元素,則matchingdata.some((m ) => m.boxy == box.boxy && m. paintid == Paint.paintid) 將被滿足,並且關聯(lián)的div 將被渲染;否則,將呈現(xiàn)'v-else' div(如果未註釋)。

您的程式碼將循環(huán)遍歷boxes中的每個框,並且對於每個框,它將循環(huán)遍歷paints中的每個paint,以在matchingdata中找到類似於以下內(nèi)容的元素:

{
  boxid: ...,
  paintid: ...,
  ...,
}

v-for 和 (v-if, v-else-if, v-else) 區(qū)塊沒有相互連接。 v-for 表示一個循環(huán),您將為清單中的每個項目呈現(xiàn)一個元素。 v-if 區(qū)塊將根據(jù)您定義的謂詞有條件地將元素渲染到頁面。

v-if、v-else-if 和 v-else 必須緊接著出現(xiàn)才能計入同一邏輯區(qū)塊。

P粉113938880

再次使用 matchingdata.some()

#您可以在v-for 循環(huán)上方的v-if 循環(huán)中使用matchingdata.some() ,該循環(huán)檢查是否可以找到任何油漆。 將 v-else 放在底部並包含您的文字。

請參閱下面的修復:

我將其貼到您的程式碼沙箱中,它使該訊息在每個框中僅出現(xiàn)一次。

相關部分正在使用 paints.find 預先檢查所有油漆:

matchingdata.some(
  (m) => m.boxid == box.boxid && paints.find( (paint) => m.paintid == paint.paintid )
)

文件:

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板