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 反饋,我們將盡快處理。
    ?
    購物車
    優惠劵
    搜索
    主站蜘蛛池模板: 视频一区视频二区日韩专区| 国产精品一区视频| 少妇一夜三次一区二区| 麻豆国产在线不卡一区二区| 精品亚洲一区二区| 久久久人妻精品无码一区| 日韩在线视频一区| 加勒比精品久久一区二区三区| 国内自拍视频一区二区三区 | 日本一区二区三区爆乳| 日本不卡一区二区视频a| 国产韩国精品一区二区三区| 视频一区二区精品的福利| 国内精品一区二区三区最新| 亚洲欧美国产国产综合一区 | 动漫精品一区二区三区3d| 亚洲熟妇AV一区二区三区宅男| 精品无码av一区二区三区| 无码国产精品一区二区免费vr | 国产美女视频一区| 日韩精品一区二区三区在线观看 | 免费人妻精品一区二区三区| 免费萌白酱国产一区二区| 国产一区二区三区播放| 亚洲第一区精品观看| 国产成人片视频一区二区| 中文字幕乱码一区二区免费| 日本精品一区二区三区在线观看| 国产一区二区三区乱码| 末成年女AV片一区二区| 亚洲日韩国产一区二区三区在线 | 国产亚洲欧洲Aⅴ综合一区| 综合人妻久久一区二区精品| 无码人妻少妇色欲AV一区二区 | 国产一区二区三区免费在线观看| 国产伦精品一区二区三区视频小说 | 精品国产一区二区三区在线观看| 日产一区日产2区| 在线中文字幕一区| 国产伦精品一区二区三区免.费| 一区二区三区波多野结衣|