v-for循環語句 – Vue3新手基礎教程

    v-for 指令需要以?site in sites?形式的特殊語法, sites 是源數據數組并且 site 是數組元素迭代的別名。

    v-for 綁定數組

    v-for 可以綁定數據到數組來渲染一個列表:

    <script src="https://unpkg.com/vue@next"></script>
    <div id="app">
      <ol>
        <li v-for="site in sites">
          {{ site.text }}
        </li>
      </ol>
    </div>
    <script>
    const app = {
      data() {
        return {
          sites: [
            { text: 'Google' },
            { text: 'Runoob' },
            { text: 'Taobao' }
          ]
        }
      }
    }
    
    Vue.createApp(app).mount('#app')
    </script>

    瀏覽器渲染結果

    1. {{ site.text }}

    v-for 綁定數組的索引

    v-for 還支持一個可選的第二個參數,參數值為當前項的索引:

    index 為列表項的索引值(從0開始)

    <script src="https://unpkg.com/vue@next"></script>
    <div id="app">
      <ol>
        <li v-for="(site, index) in sites">
          {{ index }} -{{ site.text }}
        </li>
      </ol>
    </div>
    <script>
    const app = {
      data() {
        return {
          sites: [
            { text: 'Google' },
            { text: 'Runoob' },
            { text: 'Taobao' }
          ]
        }
      }
    }
    
    Vue.createApp(app).mount('#app')
    </script>

    瀏覽器渲染結果

    1. {{ index }} -{{ site.text }}

    第一列的,1、2、3是li列表帶來的,第二列的0、1、2是索引值帶來的。

    若讓索引值從1開始,可參考如下代碼。

    {{ index+1 }} -{{ site.text }}

    v-for 在模板 <template> 中使用 v-for:

    <template v-for="site in sites">
        <li>{{ site.text }}</li>
        <li>--------------</li>
      </template>
    <script src="https://unpkg.com/vue@next"></script>
    <div id="app">
    	<ul>
    	  <template v-for="site in sites">
    		<li>{{ site.text }}</li>
    		<li>--------------</li>
    	  </template>
    	</ul>
    </div>
    <script>
    const app = {
      data() {
        return {
          sites: [
            { text: 'Google' },
            { text: 'Runoob' },
            { text: 'Taobao' }
          ]
        }
      }
    }
    
    Vue.createApp(app).mount('#app')
    </script>

    瀏覽器渲染結果

    v-for 迭代對象

    v-for 可以通過一個對象的屬性來迭代數據:

    <script src="https://unpkg.com/vue@next"></script>
    <div id="app">
      <ul>
        <li v-for="value in object">
        {{ value }}
        </li>
      </ul>
    </div>
     
    <script>
    const app = {
      data() {
        return {
          object: {
            name: '菜鳥教程',
            url: 'http://www.runoob.com',
            slogan: '學的不僅是技術,更是夢想!'
          }
        }
      }
    }
     
    Vue.createApp(app).mount('#app')
    </script>

    瀏覽器渲染結果

    • {{ value }}

    v-for 迭代對象第二參數:鍵名

    你也可以提供第二個的參數為鍵名:

    <li v-for="(value, key) in object">
        {{ key }} : {{ value }}
        </li>
    <script src="https://unpkg.com/vue@next"></script>
    <div id="app">
      <ul>
        <li v-for="(value, key) in object">
        {{ key }} : {{ value }}
        </li>
      </ul>
    </div>
     
    <script>
    const app = {
      data() {
        return {
          object: {
            name: '菜鳥教程',
            url: 'http://www.runoob.com',
            slogan: '學的不僅是技術,更是夢想!'
          }
        }
      }
    }
     
    Vue.createApp(app).mount('#app')
    </script>

    瀏覽器渲染結果

    • {{ key }} : {{ value }}

    v-for 迭代對象第三個參數:索引

    <li v-for="(value, key, index) in object">
         {{ index }}. {{ key }} : {{ value }}
        </li>
    <script src="https://unpkg.com/vue@next"></script>
    <div id="app">
      <ul>
        <li v-for="(value, key, index) in object">
         {{ index }}. {{ key }} : {{ value }}
        </li>
      </ul>
    </div>
     
    <script>
    const app = {
      data() {
        return {
          object: {
            name: '菜鳥教程',
            url: 'http://www.runoob.com',
            slogan: '學的不僅是技術,更是夢想!'
          }
        }
      }
    }
     
    Vue.createApp(app).mount('#app')
    </script>
    • {{ index }}. {{ key }} : {{ value }}

    v-for 迭代整數

    <li v-for="n in 10">
         {{ n }}
        </li>
    <script src="https://unpkg.com/vue@next"></script>
    <div id="app">
      <ul>
        <li v-for="n in 10">
         {{ n }}
        </li>
      </ul>
    </div>
     
    <script>
    	Vue.createApp(app).mount('#app')
    </script>

    瀏覽器渲染效果

    • {{ n }}

    顯示過濾/排序后的結果

    <script src="https://unpkg.com/vue@next"></script>
    <div id="app">
      <ul>
        <li v-for="n in evenNumbers">{{ n }}</li>
      </ul>
    </div>
     
    <script>
    const app = {
        data() {
            return {
                numbers: [ 1, 2, 3, 4, 5 ]
    	     }
        },
        computed: {
            evenNumbers() {
                return this.numbers.filter(number => number % 2 === 0)
            }
        }
    }
     
    Vue.createApp(app).mount('#app')
    </script>

    瀏覽器渲染

    • {{ n }}

    v-for/v-if 聯合使用

    聯合使用 v-for/v-if 給 select 設置默認值:

    <script src="https://unpkg.com/vue@next"></script>
    <div id="app">
       <select @change="changeVal($event)" v-model="selOption">
          <template v-for="(site,index) in sites" :site="site" :index="index" :key="site.id">
             <!-- 索引為 1 的設為默認值,索引值從0 開始-->
             <option v-if = "index == 1" :value="site.name" selected>{{site.name}}</option>
             <option v-else :value="site.name">{{site.name}}</option>
          </template>
       </select>
       <div>您選中了:{{selOption}}</div>
    </div>
     
    <script>
    const app = {
        data() {
            return {
                selOption: "Runoob",
                sites: [
                      {id:1,name:"Google"},
                      {id:2,name:"Runoob"},
                      {id:3,name:"Taobao"},
                ]
             }
            
        },
        methods:{
            changeVal:function(event){
                this.selOption = event.target.value;
                alert("你選中了"+this.selOption);
            }
        }
    }
     
    Vue.createApp(app).mount('#app')
    </script>

    瀏覽器渲染效果

    您選中了:{{selOption}}

    組件

    如果你還沒了解組件的內容,可以先跳過這部分。

    在自定義組件上,你可以像在任何普通元素上一樣使用 v-for:

    <my-component v-for="item in items" :key="item.id"></my-component>

    新手常見的 todo 列表渲染詳細拆解 – Vue3新手基礎教程

    參考文章

    給TA贊賞
    共{{data.count}}人
    人已贊賞
    ??
    Npcink上的部份代碼及教程來源于互聯網,僅供網友學習交流,若您喜歡本文可附上原文鏈接隨意轉載。
    無意侵害您的權益,請發送郵件至 1355471563#qq.com 或點擊右側 私信:Muze 反饋,我們將盡快處理。
    ?
    購物車
    優惠劵
    搜索
    主站蜘蛛池模板: 久久99久久无码毛片一区二区| 亚洲性日韩精品国产一区二区| 国产一区二区三区在线免费| 国产精品福利一区二区久久| 久久亚洲色一区二区三区| 国产激情视频一区二区三区| 精品久久久久久无码中文字幕一区| 精品日韩在线视频一区二区三区 | 精品一区二区三区免费观看| 精品人妻系列无码一区二区三区| 亚洲av区一区二区三| 国产福利酱国产一区二区| 久久久久人妻一区精品色| 日本一区二区三区在线网 | 麻豆国产在线不卡一区二区| 日韩人妻无码一区二区三区久久99| 亚洲码一区二区三区| 久久se精品动漫一区二区三区| 日本高清无卡码一区二区久久 | 国产精品视频一区| 久久久无码精品人妻一区 | 免费一区二区三区在线视频| 伊人色综合视频一区二区三区| 亚洲一区二区三区夜色| 亚洲欧洲一区二区| 亚洲综合在线一区二区三区| 亚洲欧美日韩中文字幕一区二区三区 | 美女啪啪一区二区三区| 人妻少妇久久中文字幕一区二区| 3d动漫精品啪啪一区二区中文| 日本片免费观看一区二区| 精品国产一区二区三区免费看| 国产av一区二区精品久久凹凸 | 日本一区午夜艳熟免费| 亚洲AV无码国产精品永久一区| 国产成人综合亚洲一区| 91麻豆精品国产自产在线观看一区 | 亚洲国产av一区二区三区| 一本AV高清一区二区三区| 国产福利一区二区三区| 成人国产一区二区三区|