v-for 遍历

v-for 遍历数和对象

<template>
  <div>
    <!-- v-for 遍历数组 -->
    <ul>
      <li :key="index" v-for="(item, index) in list">{{ item.name }} -- {{ item.age }}</li>
    </ul>
    <!-- v-for 遍历对象 -->
    <ul>
      <li :key="index" v-for="(value, key, index) in userInfo">
        {{ index }} - {{ key }} - {{ value }}
      </li>
    </ul>
  </div>
  
</template>

<script>
export default {
  name: "App",
  data() {
    return {
      userInfo: {
        name: 'lilei',
        age: 24,
        like: ['basketball', 'swimming', 'other']
      },
      list: [{name: 'xiaoming', age: 20}, {name: 'xiaohua', age: 30}]
    }
  }
};
</script>

在 v-for 里使用范围值

<div>
  <span v-for="n in 10">{{ n }} </span>
</div>

Vue 将被侦听的数组的变更方法进行了包裹,所以它们也将会触发视图更新。这些被包裹过的方法包括:

push()
pop()
shift()
unshift()
splice()
sort()
reverse()

通过数组下标直接赋值,容易引起的bug

<template>
  <div>
    <!-- v-for 遍历数组 -->
    <ul>
      <li :key="index" v-for="(item, index) in list">{{ item.name }} -- {{ item.age }}</li>
    </ul>
    <button @click="addListHandle">添加</button>
    <button @click="addListHandle1">添加1</button>
    <!-- v-for 遍历对象 -->
    <ul>
      <li :key="index" v-for="(value, key, index) in userInfo">
        {{ index }} - {{ key }} - {{ value }}
      </li>
    </ul>
  </div>
  
</template>

<script>
export default {
  name: "App",
  data() {
    return {
      userInfo: {
        name: 'lilei',
        age: 24,
        like: ['basketball', 'swimming', 'other']
      },
      list: [{name: 'xiaoming', age: 20}, {name: 'xiaohua', age: 30}]
    }
  },
  methods: {
    addListHandle() {
      // Vue没有对这种数组的赋值进行侦听,所以此操作不会更新界面,但是如果,其他的合法操作更新了界面,此操作也会更新
      this.list[this.list.length] = {name: 'hehe', age: 40}
    },
    addListHandle1() {
      // 由于userinfo.name 更新了,所以vue监听到了,会把数据全部更新一下,所以this.list[索引]也更新了,但是这样写是个容易引起bug的不好方式
      this.list[this.list.length] = {name: 'hehe1', age: 42}
      this.userInfo.name = 'lilei1'
    }
  }
};
</script>
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容