vue五:vue基础之for循环

 

v-for循环:
语法就是`变量 in 需要循环的变量名`。
1. 数组循环:`<tr v-for="book in books">`,如果在循环的时候想要把下标也循环出来,那么可以加一个圆括号,并且永远记住,第一个值是对象,第二个才是下标,不管这个名字叫做什么。

 

2. 对象循环:跟数组循环是一样的。默认循环出来的是值,如果想要循环`key`和`value`,那么加一个圆括号。

 

3.保持状态:循环出来的元素,如果没有使用key元素来唯一标识,如果后期的数据发生了更改,默认是会重用的,并且元素的顺序不会跟着数据的顺序更改而更改。
默认情况下,如果数组中的顺序发生变化,或者个数发生变化导致重新渲染,那么vue会重新利用之前的元素,而不会重新排序,这样在某些情况下可能是想要的。但是大部分情况可能不是我们想要的,这时候可以添加`key`属性。`key`只能够是number和string类型,那么在循环的时候一般使用循环出来的对象的某个唯一的值,不要使用index来作为key,虽然用了,但是没有效果。在vue2.2.x以上,在自定义组件上使用v-for,key是必须要写的。

 

<!DOCTYPE html>
<html lang='en'>
<head>
  <meta charset='UTF-8'>
  <meta name='viewport' content='width=device-width, initial-scale=1.0'>
  <meta http-equiv='X-UA-Compatible' content='ie=edge'>
  <script src='../vue.js'></script>
  <title></title>
</head>
<body>
  <div id='app'>
    <table>
      <thead>
        <tr>
          <th>序号</th>
          <th>标题</th>
          <th>作者</th>
        </tr>
      </thead>
      <tbody>
        <tr v-for="(book, index) in books">
          <td>{{ index+1 }}</td>
          <td>{{ book.title }}</td>
          <td>{{ book.author }}</td>
        </tr>
      </tbody>
    </table> -->
    
    <div v-for="(value, key) in person">   <!-- 顺序永远为:(对象, 下标值) -->
      {{ key }}: {{ value }}
    </div>

    <div v-for="(book,index) in books" :key="book.title"><!-- 使用key过后,输入框中的值会绑定给输入框 -->
      <label>标题:</label>
      <input type="text" :placeholder="book.title">
    </div>
    <button @click="changeBookSort">点击更改图书顺序</button>
  </div>
  <script>
    new Vue({
      el: '#app',
      methods: {
        changeBookSort(){
          this.books.sort(function (a, b) {
            return Math.random(0,1) - 0.5  // 取一个随机的浮点数,大于0时为true,小于0时为false
          })
        }
      },
      data: {
        books: [{
          'title': '三国演义',
          'author': '罗贯中'
          },{
          'title': '水浒传',
          'author': '施耐庵'
          },{
          'title': '西游记',
          'author': '吴承恩'
          },{
          'title': '红楼梦',
          'author': '曹雪芹'
        }],
        person: {
          // 键值对
          "username": "百度",
          "age": 18,
          "homepage": "https://www.baidu.com/"
        }
      }
    })
  </script>
</body>
</html>

 

posted @ 2021-01-19 20:12  向前走。  阅读(10706)  评论(0编辑  收藏  举报