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>

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

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

    參考文章

    VUE模塊

    v-on事件處理 - Vue3新手基礎教程

    2022-8-19 16:02:20

    VUE模塊

    methods方法 - Vue3新手基礎教程

    2022-8-22 17:43:08

    ??
    Npcink上的部份代碼及教程來源于互聯網,僅供網友學習交流,若您喜歡本文可附上原文鏈接隨意轉載。
    無意侵害您的權益,請發送郵件至 1355471563#qq.com 或點擊右側 私信:Muze 反饋,我們將盡快處理。
    0 條回復 A文章作者 M管理員
      暫無討論,說說你的看法吧
    ?
    個人中心
    購物車
    優惠劵
    今日簽到
    有新私信 私信列表
    搜索
    主站蜘蛛池模板: 亚洲一区二区视频在线观看 | 一区二区高清在线观看| 国精产品一区二区三区糖心| 亚洲AV日韩综合一区尤物| 国产福利电影一区二区三区| 毛片无码一区二区三区a片视频| 国产91一区二区在线播放不卡 | 亚洲AV网一区二区三区| 无码国产精品一区二区免费3p | 日韩AV无码一区二区三区不卡| 成人一区专区在线观看| 亚洲综合在线一区二区三区| 国产激情视频一区二区三区| 国产在线观看一区精品| 久久国产精品免费一区| 久久久国产一区二区三区| 后入内射国产一区二区| 精品中文字幕一区二区三区四区| 亚洲一区中文字幕在线电影网| 国产成人久久精品一区二区三区 | 99精品国产一区二区三区不卡| 岛国无码av不卡一区二区| 日本大香伊一区二区三区| 国产在线精品一区二区三区不卡| 久久精品国产一区二区三区不卡| 亚洲AV无码一区二区三区在线观看 | 一区二区三区四区精品视频| 国产一区二区三区乱码| 精品91一区二区三区| 狠狠爱无码一区二区三区| 福利电影一区二区| 精品人妻少妇一区二区| 好看的电影网站亚洲一区| 色窝窝无码一区二区三区色欲| 久久久久成人精品一区二区| 精品一区精品二区制服| 怡红院一区二区三区| 日韩电影在线观看第一区| 精品乱子伦一区二区三区 | 日本精品视频一区二区三区| 国产一区二区视频免费|