1. 程式人生 > >用vue.js的v-for,v-if,computed寫一個分頁樣式

用vue.js的v-for,v-if,computed寫一個分頁樣式

在學Vue,總想寫個分頁,先寫了一個樣式。
主要看思路:
思路簡單,得到總頁數,判斷總頁數,迴圈。
先判斷總頁數是否需要分頁,總頁數==1頁就不分了。
再判斷總頁數<11就不用……。
總頁數>11,就要用到1…… 678 …… 末頁
通過v-if 判斷,通過v-for迴圈。
效果圖:

程式碼如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>vue</title>
<script src="./vue.js"></script>
<script src="./axios.min.js"></script>
<style>
    #app{
        margin-top: 120px;
    }
    .pagenav{
        margin: 10px;
     padding: 5px;
        border: 1px solid #CCCCCC;
        font-size: 12px;
        width: 25px;
    }
    .selectedpage{
        background-color: #000000;
        color:#FFFFFF;
    }
</style>
</head>
<body>
<div id="app" v-if="pagenavshow"> //總頁數等於1就不顯示分頁div了。
<p v-if="shownot">  //總頁數小於11, 就不用顯示……了。
<span class="pagenav" v-bind:class="{ 'selectedpage':  item==curpage  }" v-for=' item  in sum' v-on:click='pageclick(item)'>{{item}}</span>
</p>
<p v-else>
<span class="pagenav" v-bind:class="{ 'selectedpage':  item==curpage  }" v-for=' item in firstsum' v-on:click='pageclick(item)'>{{item}}</span>
<span>……</span>
<span class="pagenav" v-bind:class="{ 'selectedpage':  item==curpage  }" v-for=' item in middlesum' v-on:click='pageclick(item)'>{{item}}</span>
<span v-if="secondpot">……</span>  //當前頁數小於6或者大於末頁-4, 就不用顯示第二個……了。
<span class="pagenav" v-bind:class="{ 'selectedpage':  item==curpage  }" v-for=' item in lastsum' v-on:click='pageclick(item)'>{{item}}</span>
</p>
</div>
<script>
 var app = new Vue({
     el:'#app',
     data:{
         sum:100,
         curpage:'1',
     },
     methods:{
         pageclick: function(item){
             this.curpage=item;
             console.log(this.curpage)
         }
     },
     computed:{
         pagenavshow: function(){
             if (this.sum==1){
             return false;
             }else{
             return true;
             }
         },
         
         shownot: function(){
             if (this.sum<12){
                return true;
             }else{
                return false
             }
         },
         firstsum:function(){
             if (this.curpage<6){
                 return [1,2,3,4,5,6,7];
         }else{
             return 1;
         }},
         middlesum:function(){
          var cpage=this.curpage;
                if (this.curpage<6 || this.curpage>this.sum-4){
                    return false;
            }else{
                return [cpage-2,cpage-1,cpage,cpage+1,cpage+2];
          }},
         lastsum:function(){
                if (this.curpage<this.sum-3){
                    return [this.sum];
             }else{
                 return [this.sum-5,this.sum-4,this.sum-3,this.sum-2,this.sum-1,this.sum]
             }
         },
         secondpot: function(){
             if(this.curpage<6 || this.curpage>this.sum-4){
            return false;}else{
                return true
            }
         }
     }
 })
</script>
</body>
</html>