1. 程式人生 > 實用技巧 >VUE - 基礎語法(條件、迴圈)

VUE - 基礎語法(條件、迴圈)

v-show指令,判斷元素是否應該顯示:

傳入的值為true,或能被轉換為true,該元素會被顯示。

傳入的值為false,或能被轉換為false,該元素會被隱藏。相當於設定了 display:none;。

<div id="test">
  <p v-show="one">顯示</p>
  <p v-show="two">顯示</p>
  <p v-show="three">隱藏</p>
  <p v-show="four">隱藏</p>
</div>
<!--解析結果 - START-->
<div>
  <p>顯示</p>
  <p>顯示</p>
  <p style="display:none;">隱藏</p>
  <p style="display:none;">隱藏</p>
</div>
<!--解析結果 - END-->
<script type="text/javascript">
  var obj = new Vue({
    el : "#test",
    data : {
      one : true,
      two : 1,
      three : false,
      four : 0
    }
  });
</script>

v-if、v-else-if、v-else,判斷元素是否應該載入:

哪一個程式碼塊的判斷條件為true,就載入那一塊,否則不被載入。

注意:v-show的執行結果是元素是否顯示,這三個指令的執行結果是元素是否載入,還是有區別的。

<div id="test">
  <p v-if="status=='loading'">loading</p>
  <p v-else-if="status='success'">success</p>
  <p v-else="status='fail'">fail</p>
</div>
<!--解析結果 - START-->
<div>
  <p>loading</p>
</div>
<!--解析結果 - END-->
<script type="text/javascript">
  var obj = new Vue({
    el : "#test",
    data : {
      status : "loading"
    }
  });
</script>

v-for指令,可以基於源資料多次渲染元素:

迴圈整數(整數就是迴圈次數 - 從1開始):

//n in m或者n of m
<ul id="test">
  <li v-for="n in 2">{{n}}</li>
  <li v-for="n of 2">{{n}}</li>
  <li v-for="n in m">{{n}}</li>
  <li v-for="n of m">{{n}}</li>
</ul>
<!--解析結果 - START-->
<ul>
  <li>1</li>
  <li>2</li>
  <li>1</li>
  <li>2</li>
  <li>1</li>
  <li>2</li>
  <li>3</li>
  <li>1</li>
  <li>2</li>
  <li>3</li>
</ul>
<!--解析結果 - END-->
<script type="text/javascript">
  var obj = new Vue({
    el : "#test",
    data : {
      m : 3
    }
  });
</script>

迴圈陣列:

//item in arr 或者 item of arr,迴圈輸出資料項
<ul id="test">
  <li v-for="item in names">{{item}}</li>
  <li v-for="item of names">{{item}}</li>
</ul>
<!--解析結果 - START-->
<ul>
  <li>張三</li>
  <li>李四</li>
  <li>王五</li>
  <li>張三</li>
  <li>李四</li>
  <li>王五</li>
</ul>
<!--解析結果 - END-->
<script type="text/javascript">
  var obj = new Vue({
    el : "#test",
    data : {
      names : ["張三","李四","王五"]
    }
  });
</script>

//(item,index) in arr 或者 (item,index) of arr,迴圈輸出資料項和索引
<ul id="test">
  <li v-for="(item,index) in names">第{{item}}個人是:{{item}}</li>
  <li v-for="(item,index) of names">第{{item}}個人是:{{item}}</li>
</ul>
<!--解析結果 - START-->
<ul>
  <li>第0個人是:張三</li>
  <li>第1個人是:李四</li>
  <li>第2個人是:王五</li>
  <li>第0個人是:張三</li>
  <li>第1個人是:李四</li>
  <li>第2個人是:王五</li>
</ul>
<!--解析結果 - END-->
<script type="text/javascript">
  var obj = new Vue({
    el : "#test",
    data : {
      names : ["張三","李四","王五"]
    }
  });
</script>

迴圈物件:

//value in obj或者value of obj,迴圈物件的值
<div id="test">
  <p v-for="value in student">{{value}}</p>
  <p v-for="value of student">{{value}}</p>
</div>
<!--解析結果 - START-->
<ul>
  <p>傻屌</p>
  <p>24</p>
  <p>傻屌</p>
  <p>24</p>
</ul>
<!--解析結果 - END-->
<script type="text/javascript">
  var obj = new Vue({
    el : "#test",
    data : {
      student : {
        name : "傻屌",
        age : 24
      }
    }
});
</script>

//(value,key) in obj或者(value,key) of obj,迴圈物件的值和屬性
<div id="test">
  <p v-for="(value,key) in student">屬性:{{key}},值:{{value}}</p>
  <p v-for="(value,key) of student">屬性:{{key}},值:{{value}}</p>
</div>
<!--得到結果 - START-->
<div>
  <p>屬性:name,值:傻屌</p>
  <p>屬性:age,值:24</p>
  <p>屬性:name,值:傻屌</p>
  <p>屬性:age,值:24</p>
</div>
<!--得到結果 - END-->
<script type="text/javascript">
  var obj = new Vue({
    el : "#test",
    data : {
      student : {
        name : "傻屌",
        age : 24
      }
    }
  });
</script>

//(value,key,index) in obj或者(value,key,index) of obj,迴圈物件的值、屬性、索引
<div id="test">
  <p v-for="(value,key,index) in student">第{{index}}個屬性{{key}}的值為{{value}}</p>
  <p v-for="(value,key,index) of student">第{{index}}個屬性{{key}}的值為{{value}}</p>
</div>
<!--得到結果 - START-->
<div>
  <p>第0個屬性name的值為傻屌</p>
  <p>第1個屬性age的值為24</p>
  <p>第0個屬性name的值為傻屌</p>
  <p>第1個屬性age的值為24</p>
</div>
<!--得到結果 - END-->
<script type="text/javascript">
  var obj = new Vue({
    el : "#test",
    data : {
      student : {
        name : "傻屌",
        age : 24
      }
    }
  });
</script>

注意:v-for和v-if不推薦同時作用於一個元素,遇到這種情況,請謹慎構思標籤結構。