08-Vue的循环遍历


v-for遍历数组

<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Document</title>
  </head>

  <body>
    <div id="app">
      <!-- 1.在遍历过程中,没有使用索引值(下标值) -->
      <ul>
        <li v-for="item in names">{{item}}</li>
      </ul>

	  <!-- 2.在遍历过程中,使用索引值(下标值) -->
      <ul>
        <li v-for="(item, index) in names">{{index + 1}}-{{item}}</li>
      </ul>
    </div>

    <script src="../js/vue.js"></script>
    <script>
      const app = new Vue({
        el: "#app",
        data: {
          names: ["why", "kobe", "james", "curry"]
        }
      })
    </script>
  </body>
</html>
1.v-for是什么

for是什么这里不做讲解,v-for就是Vue专用的便捷版的for。遍历一个简单的数组不用再像原来那个for(int i = 0;i < item.length;i ++)了,只需for(item in items)即可。详细操作如下:

<ul>
	<li v-for="item in names">{{item}}</li>
</ul>

此时item就是数组names中的每一个数据项,而无序列表li的个数就是names的长度,用Mustache语法将其展示即可。效果图如下:
在这里插入图片描述

2.index的加入

很多时候我们的需求不仅仅是每个数据项,还有当前数据项的索引(下标),Vue也帮我们在后台处理好了。代码如下:

<ul>
	<li v-for="(item, index) in names">{{index + 1}}-{{item}}</li>
</ul>

在使用时,只要将index和item放在一起即可使用index,切记item在index前面。效果图如下:
在这里插入图片描述


v-for遍历对象

<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Document</title>
  </head>

  <body>
    <!-- 1.在遍历对象的时候,如果只是获取一个值,那么获取到的是value -->
    <div id="app">
      <ul>
        <li v-for="item in info">{{item}}</li>
      </ul>

      <!-- 2.获取key和value ===> (value,key) -->
      <ul>
        <li v-for="(value, key) in info">{{key}}-{{value}}</li>
      </ul>

      <!-- 3.获取key和value ===> (value,key,index) -->
      <ul>
        <li v-for="(value, key, index) in info">{{index}}-{{key}}-{{value}}</li>
      </ul>
    </div>

    <script src="../js/vue.js"></script>
    <script>
      const app = new Vue({
        el: "#app",
        data: {
          info: {
            name: "blueribbon",
            age: 21,
            height: 191
          }
        }
      })
    </script>
  </body>
</html>
1.怎么遍历对象

如果data变量中有一个对象,它有各个不同的属性和对应的值,那也可以用v-for将它的各个属性以及属性值遍历出来显示在浏览器。

  • 只获取value
<ul>
	<li v-for="item in info">{{item}}</li>
</ul>

效果图如下:
在这里插入图片描述

  • 获取key和value ==> (value, key)
<ul>
	<li v-for="(value, key) in info">{{key}}-{{value}}</li>
</ul>

切记key和value的位置不能交换。效果图如下:
在这里插入图片描述

  • 获取key,value和index ===> (value, key, index)
<ul>
	<li v-for="(value, key, index) in info">{{index}}-{{key}}-{{value}}</li>
</ul>

切记key,value和index三者的位置不能交换。效果图如下:
在这里插入图片描述


v-for使用过程添加key

<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Document</title>
  </head>

  <body>
    <div id="app">
      <ul>
        <li v-for="(item, index) in letters" :key="index">{{item}}</li>
      </ul>
    </div>

    <script src="../js/vue.js"></script>
    <script>
      const app = new Vue({
        el: "#app",
        data: {
          letters: ["A", "B", "C", "D", "E"]
        }
      })
    </script>
  </body>
</html>
1.为什么添加key

key是什么我们都知道,即唯一标识,这和Vue的动态改变页面结构有关,至于详细的解释,我借鉴了一下别人的说法,为什么添加key

2.怎么添加key

使用v-bind:key="",即可为当前标签添加key,由于b-bind的大量使用,贴心的Vue后台也为我们准备了语法糖即:key=""。

3.将什么设置为key

我们都知道开发时数据都是从后端请求过来的,而了解数据库的人都知道,几乎每个表都会有一个主键,而我们的key一般都是信息的主键。


小作业

要求:遍历一个电影名字列表,默认第一个是红色字体,然后点击哪一项,该项就变成红色字体,而原来的红色字体消失。
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Document</title>
    <style>
      .red {
        color: red;
      }
    </style>
  </head>

  <body>
    <!-- 点击列表中的哪一项,那么该项的文字变成红色 -->
    <div id="app">
      <ul>
        <li
          v-on:click="btnClick(index)"
          :class="{red:currentIndex === index}"
          v-for="(item, index) in movies"
          :key="index"
        >
          {{index}}-{{item}}
        </li>
      </ul>
    </div>

    <script src="../js/vue.js"></script>
    <script>
      const app = new Vue({
        el: "#app",
        data: {
          movies: ["海王", "火影忍者", "进击的巨人", "星际穿越"],
          red: "red",
          currentIndex: 0
        },
        methods: {
          btnClick: function(e) {
            this.currentIndex = e
          }
        }
      })
    </script>
  </body>
</html>
1.内容讲解
  • 首先是v-for遍历整个电影列表
  • 用前面讲过的知识点对象语法绑定class给每个li定义一个样式red(已经在style中定义),当该li的index等于data变量中的currentIndex为true时,样式red生效,因为默认初始第一项是红色,所以currentIndex初始值为0。
  • 给第个li添加一个点击事件,当前项被点击时,data变量中的currentIndex的值更改为当前项的index,则当前项的样式red为true,第一项的样式red为false。
  • 绑定key为每一项的index。
2.难点分析

我认为该题的难点在于新建一个currentIndex变量,点击更改颜色,我们很大可能会想到和下标联系在一起,但是可能想不到会新建一个变量保存当前的颜色对应下标,这需要我们对v-for和v-bind的熟练结合运用。
运行效果如下:
在这里插入图片描述


第一次记录自己的学习笔记,如果您发现问题,欢迎指点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝带915

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值