03-Vue入門系列之Vue列表渲染及條件渲染實戰

3.1. 條件渲染

有時候咱們要根據數據的狀況,決定標籤是否進行顯示或者有其餘動做。最多見的就是,表格渲染的時候,若是表格沒有數據,就顯示無數據。若是有數據就顯示錶格數據。 Vue幫咱們提供了一個v-if的指令,幫助咱們完成判斷的模板處理。html

<div id="app">
  <h1 v-if="ok">Yes</h1>
  <h1 v-else>No</h1>  
</div>
<!-- 當ok爲true的時候,輸出: Yes, 不然輸出: No -->

<script>
  var app = new Vue({         
    el: '#app',               
    data: {    
      ok: true      // true,返回:Yes,   false=> No               
    }
  });
</script>

v-if指令能夠根據數據綁定的狀況進行插入標籤或者移除標籤。 固然,若是熟悉js的都清楚,有if,確定會有else。 Vue提供的是 v-else指令。vue

3.2. 列表渲染

3.2.1. 基本v-for循環渲染標籤

模板引擎都會提供循環的支持。Vue也不例外,Vue是提供了一個v-for指令。基本的用法相似於foreach的用法。仍是看例子最直接,上代碼:git

<div id="app">
  <table>
    <thead>
      <tr>
        <th>姓名</th>
        <th>年齡</th>
        <th>地址</th>
      </tr>
    </thead>
    <tbody> 
      <!-- 每次for循環,都會建立一個tr標籤。item是遍歷的元素。 -->
      <tr v-for="item in UserList" >
        <td>{{ item.name }}</td>
        <td>{{ item.age }}</td>
        <td>{{ item.address }}</td>
      </tr>
    </tbody>
  </table>
</div>
<script>
  var app = new Vue({         
    el: '#app',               
    data: {                   
     UserList: [
      {'name': 'malun', 'age': 18, 'address': '北京黑地下室'},
      {'name': 'flydragon', 'age': 22, 'address': '廈門的不少熱的地方'},
      {'name': 'temp', 'age': 25, 'address': '東北松花江上'}
     ]
    }
  });
</script>

3.2.2. Template循環渲染多標籤

上面的例子,咱們演示的是 每次循環輸出一個tr標籤。若是咱們但願每次循環生成兩個tr標籤呢?若是還有生成其餘的標籤呢?github

Vue給咱們提供了template標籤,供咱們用於v-for循環中進行處理。數組

上代碼嘍:app

<ul>
  <!-- 經過template標籤,能夠一次循環,輸出兩個li標籤 -->
  <template v-for="item in items">
    <li>{{ item.msg }}</li>
    <li class="divider"></li>
  </template>
</ul>

3.2.3. 關於v-for對應的數組的更新

因爲Vue的機制就是檢測數據的變化,自動跟新HTML。數組的變化,Vue之檢測部分函數,檢測的函數執行時纔會觸發視圖更新。這些方法以下:ide

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

3.3. 表格顯示的綜合案例

下面是一個綜合的案例,每秒鐘往表格中添加一條數據。 本案例綜合使用了v-if 和 v-for循環綜合案例。函數

<!DOCTYPE html> 
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Vue入門之動態顯示錶格</title>
  <script src="https://unpkg.com/vue/dist/vue.js"></script>
</head>
<body>
  <div id="app">
    <table>
      <thead>
        <tr>
          <th>姓名</th>
          <th>年齡</th>
          <th>地址</th>
        </tr>
      </thead>
      <!-- 若是列表有數據,直接輸出表格數據,沒有數據提示用戶沒有數據 -->
      <tbody v-if="UserList.length > 0"> 
        <tr v-for="item in UserList" >
          <td>{{ item.name }}</td>
          <td>{{ item.age }}</td>
          <td>{{ item.address }}</td>
        </tr>
      </tbody>
      <tbody v-else>
        <tr><td colspan="3">沒有數據奧!</td></tr>
      </tbody>
    </table>
  </div>
  <script>
    var app = new Vue({         
      el: '#app',               
      data: {                   
       UserList: []
      }
    });

    // 每秒鐘插入一條數據。
    setInterval(function () {
      app.UserList.push({'name': 'malun', 'age': 18, 'address': '北京黑地下室'});
    }, 1000);
  </script>
</body>
</html>

3.4. 總結列表和條件綁定

列表的使用其實本質仍是js的衍生使用,對於有js開發基礎的沒有什麼難度。關鍵是多寫幾個案例就會詳細通了。spa

 

Github地址:源碼下載
其餘詳情請參考:http://aicoder.com/vue/preview/all.htmlcode

相關文章
相關標籤/搜索