Vue循环语句的若干用法

简介: Vue循环语句的若干用法

@TOC

注意

需要特别注意的是,在Vue3中,使用v-for需要制定key值,为了给 Vue 一个提示,以便它能跟踪每个节点的身份,从而重用和重新排序现有元素,你需要为每项提供一个唯一 key。建议尽可能在使用 v-for 时提供 key。

<li v-for="site in sites" :key="site.id">

单参数迭代

最简单的就是v-for:“site in sites”, sites 是源数据数组,将site作为迭代器,遍历sites中的text。

<template>
  <div id="test">
    <ol>
      <li v-for="site in sites" :key="site.id">
        {{site.text}}
      </li>
    </ol>
  </div>
</template>
<script>
export default {
  name: "Test",
  data() {
    return {
      sites: [
        { text: 'Google' },
        { text: 'Runoob' },
        { text: 'Taobao' }
      ],
    };
  },
};
</script>

在这里插入图片描述

多参数迭代

使用双参数迭代,(site,index) in sites,site.text可以遍历sites中的text,而index则可以用于计数。

<template>
  <div id="test">
    <ol>
      <li v-for="(site,index) in sites" :key="site.id">
        {{index}} {{site.text}} 
      </li>
    </ol>
  </div>
</template>
<script>
export default {
  name: "Test",
  data() {
    return {
      sites: [
        { text: 'Google' },
        { text: 'Runoob' },
        { text: 'Taobao' }
      ],
    };
  },
};
</script>

在这里插入图片描述

迭代遍历对象

v-for 可以通过一个对象的属性来迭代数据,

单参数迭代:

<template>
  <div id="test">
    <ul>
      <li v-for="value in class" v-bind:key="value.id">
        {{value}} 
      </li>
    </ul>
  </div>
</template>
<script>
export default {
  name: "Test",
  data() {
    return {
      class:{
        name:'math',
        num:'301',
        grade:'3'
      }
    };
  },
};
</script>

在这里插入图片描述

多参数迭代:

<template>
  <div id="test">
    <ul>
      <li v-for="(value,key) in classList" v-bind:key="value.index">
        {{key}}:{{value}}  
      </li>
    </ul>
  </div>
</template>
<script>
export default {
  name: "Test",
  data() {
    return {
      classList:{
        name:'math',
        num:'301',
        grade:'3'
      }
    };
  },
};
</script>

在这里插入图片描述

联合使用v-for/v-if

联合使用 v-for/v-if 给 select 设置默认值:

<template>
  <div id="test">
   <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>
</template>
<script>
export default {
  name: "Test",
  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);
        }
    }
}
</script>

在这里插入图片描述

相关文章
|
2天前
|
JavaScript
|
1天前
|
存储 缓存 JavaScript
vue代码优化方案
【7月更文挑战第13天】 **Vue.js 优化要点:** 分解大组件以提高复用性和加载速度;利用计算属性与侦听器优化数据处理;使用Object.freeze()减少响应式数据;借助Vuex或Composition API管理状态;实现虚拟滚动和无限加载提升长列表性能;路由懒加载减少初始加载时间;用Vue DevTools检测性能瓶颈;定期代码审查与重构;应用缓存策略;遵循最佳实践与团队规范,提升应用整体质量。
10 2
|
4天前
|
JavaScript 前端开发
【vue】 el-table解决分页不能筛选全部数据的问题
【vue】 el-table解决分页不能筛选全部数据的问题
15 4
|
4天前
|
JavaScript
【vue】 vue2 监听滚动条滚动事件
【vue】 vue2 监听滚动条滚动事件
10 1
|
4天前
|
JavaScript 定位技术
【天地图】vue 天地图 T is not defined
【天地图】vue 天地图 T is not defined
14 1
|
4天前
|
JavaScript
【vue】el-dialog 内的tinymce弹窗被遮挡的解决办法 及 tinymce打开弹出菜单后直接关闭对话组件,导致该弹出菜单残留
【vue】el-dialog 内的tinymce弹窗被遮挡的解决办法 及 tinymce打开弹出菜单后直接关闭对话组件,导致该弹出菜单残留
14 6
|
9天前
|
数据采集 JavaScript 前端开发
Vue框架的优缺点是什么
【7月更文挑战第5天】 Vue框架:组件化开发利于重用与扩展,响应式数据绑定简化状态管理;学习曲线平缓,生态系统丰富,集成便捷,且具性能优化手段。缺点包括社区规模相对小,类型支持不足(Vue 3.x改善),路由和状态管理需额外配置,SEO支持有限。随着发展,部分缺点正被克服。
19 1
|
9天前
|
JavaScript
Vue卸载eslint的写法,单独安装eslint,单独卸载eslint
Vue卸载eslint的写法,单独安装eslint,单独卸载eslint
|
9天前
|
JavaScript
青戈大佬安装Vue,无Eslint安装版,vue2安装,vue2无eslint,最简单配置Vue安装资料
青戈大佬安装Vue,无Eslint安装版,vue2安装,vue2无eslint,最简单配置Vue安装资料
|
4天前
|
JavaScript 前端开发
【vue】 Tinymce 数据 回显问题 | 第一次正常回显后面,显示空白bug不能编辑
【vue】 Tinymce 数据 回显问题 | 第一次正常回显后面,显示空白bug不能编辑
9 0