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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM