2023年度鐵人_[Day 11] v-開頭的所有指令全介紹_part2.

v-else-if 指令
v-else-if 的意思是針對多個條件進行判斷時使用。一個使用 v-else-if 的元素必須緊接在一個 v-if 或一個 v-else-if元素後面。在一個連續的條件判斷中,v-if 只能有 1 個,而 v-else-if 可以有多個。

<template>
    <div>
      <ul>
        <li v-if="vName=='Andy'">姓名:{{vName}}</li>
        <li v-else-if="vName=='大頭'">姓名:{{vName}}</li>
        <li v-else-if="vName=='Mike'">姓名:{{vName}}</li>
      </ul>
    </div>
  </template>
<script setup>
    let vName = "大頭";
</script>

https://ithelp.ithome.com.tw/upload/images/20230920/201074525F5DUMtjJa.png
v-else 指令
v-else 指令是指 v-if 或 v-else-if 都沒有滿足條件,則執行 v-else 指令。
一個 v-else 必須跟在一個 v-if 或 v-else-if 後面,否則它將不會被識別。

<template>
    <div>
      <ul>
        <li v-if="vName=='Andy'">姓名:{{vName}}</li>
        <li v-else-if="vName=='大頭'">姓名:{{vName}}</li>
        <li v-else>姓名:{{vName}}</li>
      </ul>
    </div>
  </template>
<script setup>
    let vName = "大頭";
</script>

https://ithelp.ithome.com.tw/upload/images/20230920/20107452PDXMY04heo.png

小叮嚀:需注意v-else屬性寫法不要寫錯不然eslint檢查會報錯喔
6:20 error 'v-else' directives require no attribute value vue/valid-v-else
https://ithelp.ithome.com.tw/upload/images/20230920/20107452dDuxaku9Z1.png

v-for 指令
v-for 指令可以跌代地渲染一個 HTML 元素,通常用於呈現一個list資料。
主要是對於陣列、物件、集合等進行遍歷,並應用於指定的 HTML 元素。

需要使用 item in items 的語法,其中 items 是集合,item 是循環的每一項,每循環一次,item 的值就會改變,
新值覆蓋掉舊值。

<template>
    <div>
      <ul>
        <li v-for="stu in students">
          Name:{{stu.name}} Age:{{stu.age}}
        </li>
      </ul>
    </div>
  </template>
<script setup>
    let students = [{ name: "Linda", age: 25 }, { name: "Tony", age:24 }];
</script>

eslint報錯
4:9 error Elements in iteration expect to have 'v-bind:key' directives vue/require-v-for-key

https://ithelp.ithome.com.tw/upload/images/20230920/20107452LVk6fhBg51.png
小叮嚀:需注意Vue版本到了較高版時候 2.2.0以上的版本,若有在元件中使用v-for時,key是必須的。
或者也可以偷偷將eslint的此規範給關閉(等後續有時間再來補充吧)

<!-- eslint-disable --> 
<template>
    <div>
      <ul>
        <li v-for="stu in students">
          Name:{{stu.name}} Age:{{stu.age}}
        </li>
      </ul>
    </div>
  </template>
<script setup>
    let students = [{ name: "Linda", age: 25 }, { name: "Tony", age:24 }];
</script>

於最一開頭加上
就可以暫時pass掉eslint造成的困惑

https://ithelp.ithome.com.tw/upload/images/20230920/20107452VN7nPua6OA.png

有Key值版本

<!-- eslint-disable --> 
<template>
    <div>
      <ul>
        <li v-for="stu in students" :key="stu.id">
            {{stu.name}}
        </li>
      </ul>
    </div>
  </template>
<script setup>
    let students = [{id:1, name: "Linda", age: 25 }, {id:2, name: "Tony", age:24 }];
</script>

https://ithelp.ithome.com.tw/upload/images/20230920/2010745293aGCs6hkY.png


使用 v-bind 設定 key 屬性,當然前面說過v-bind 可省略為:
引此使用:key 設定屬性,其值是 stu.id,就是每個物件的唯一識別的ID。
無論你如何排列元素,key 屬性的值是唯一的,可以唯一識別該元素。

也可以指定一個整數值,表示從 1 到某整數值之間的範圍進行跌代。
<!-- eslint-disable --> 
<template>
    <div>
      <ul>
        <li v-for="x in 9">
          {{x}}
        </li>
      </ul>
    </div>
  </template>
<script setup>
    
</script>


https://ithelp.ithome.com.tw/upload/images/20230920/20107452nNWEGLR7oF.png
Ref:
https://www.cnblogs.com/zdz8207/p/vue-for-v-bind-key.html
https://www.modb.pro/db/195911
https://www.jb51.net/article/244618.htm

留言

這個網誌中的熱門文章

何謂淨重(Net Weight)、皮重(Tare Weight)與毛重(Gross Weight)

Architecture(架構) 和 Framework(框架) 有何不同?_軟體設計前的事前規劃的藍圖概念

經得起原始碼資安弱點掃描的程式設計習慣培養(五)_Missing HSTS Header