国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

vuejs2.0實現一個簡單的分頁示例

2019-11-19 17:27:36
字體:
來源:轉載
供稿:網友

最近幾個項目用上vue了項目又剛好需要一個分頁的功能。于是百度發現幾篇文章介紹的實在方式有點復雜,沒耐心看自己動手寫了一個。

用js實現的分頁結果如圖所示:

css

.page-bar{  margin:40px;}ul,li{  margin: 0px;  padding: 0px;}li{  list-style: none}.page-bar li:first-child>a {  margin-left: 0px}.page-bar a{  border: 1px solid #ddd;  text-decoration: none;  position: relative;  float: left;  padding: 6px 12px;  margin-left: -1px;  line-height: 1.42857143;  color: #337ab7;  cursor: pointer}.page-bar a:hover{  background-color: #eee;}.page-bar a.banclick{  cursor:not-allowed;}.page-bar .active a{  color: #fff;  cursor: default;  background-color: #337ab7;  border-color: #337ab7;}.page-bar i{  font-style:normal;  color: #d44950;  margin: 0px 4px;  font-size: 12px;}

模版

<div class="page-bar">  <ul>    <li v-if="cur>1"><a v-on:click="cur--,pageClick()">上一頁</a></li>    <li v-if="cur==1"><a class="banclick">上一頁</a></li>    <li v-for="index in indexs" v-bind:class="{ 'active': cur == index}">      <a v-on:click="btnClick(index)">{{ index }}</a>    </li>    <li v-if="cur!=all"><a v-on:click="cur++,pageClick()">下一頁</a></li>    <li v-if="cur == all"><a class="banclick">下一頁</a></li>    <li><a>共<i>{{all}}</i>頁</a></li>  </ul></div>

js

var pageBar = new Vue({  el: '.page-bar',  data: {    all: 20, //總頁數    cur: 1,//當前頁碼});

調用 new Vue({參數}) 就是創建了一個基本的組件,賦值給變量 pageBar.

el就是element的縮寫,定位模版的位置.data就是數據了.

知道了總頁數但是要顯示頁碼還是要一番計算,所以顯示頁碼就是計算屬性了.

所以我們要用computed 

computed: {    indexs: function(){     var left = 1;     var right = this.all;     var ar = [];     if(this.all>= 5){      if(this.cur > 3 && this.cur < this.all-2){          left = this.cur - 2          right = this.cur + 2      }else{        if(this.cur<=3){          left = 1          right = 5        }else{          right = this.all          left = this.all -4        }      }     }    while (left <= right){      ar.push(left)      left ++    }    return ar    }       }

 看一下頁面顯示出來的循環:

<li v-for="index in indexs" v-bind:class="{ 'active': cur == index}">    <a v-on:click="btnClick(index)">{{ index }}</a>  </li>

v-for是循環渲染輸出計算屬性indexs.每一次循環的子元素賦值給index v-bind:class綁定class,當渲染到目前的角標的時候加個class v-on:click是綁定了事件,我把index當參數傳進入了,后面做判斷,默認傳event事件.
然后我們給Vue的選項里面再增加methods字段

methods: {    btnClick: function(data){//頁碼點擊事件      if(data != this.cur){        this.cur = data       }    },    pageClick: function(){      console.log('現在在'+this.cur+'頁');    }  },

組件交互

組件寫完了,問題來了,用戶點擊發生頁面改變,你怎么通知其他組件作出相應的變化. 可以在頁角發生改變的函數下,插一條語句通知其他組件。不過這種方法是很差的做法。可以使用

watch: {    cur: function(oldValue , newValue){      console.log(arguments);    }  }

觀察了cur數據當它改變的時候,可以獲取前后值。然后通知其他組件。

完整的代碼:

<!DOCTYPE html><html><head><meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/><meta charset="utf-8"><title></title><meta name="keywords" content="" /><meta name="description" content="" /><script type="text/javascript" src="js/vue.min.js"></script><style>.page-bar{  margin:40px;}ul,li{  margin: 0px;  padding: 0px;}li{  list-style: none}.page-bar li:first-child>a {  margin-left: 0px}.page-bar a{  border: 1px solid #ddd;  text-decoration: none;  position: relative;  float: left;  padding: 6px 12px;  margin-left: -1px;  line-height: 1.42857143;  color: #337ab7;  cursor: pointer}.page-bar a:hover{  background-color: #eee;}.page-bar a.banclick{  cursor:not-allowed;}.page-bar .active a{  color: #fff;  cursor: default;  background-color: #337ab7;  border-color: #337ab7;}.page-bar i{  font-style:normal;  color: #d44950;  margin: 0px 4px;  font-size: 12px;}</style></head><body> <div class="page-bar">  <ul>    <li v-if="cur>1"><a v-on:click="cur--,pageClick()">上一頁</a></li>    <li v-if="cur==1"><a class="banclick">上一頁</a></li>    <li v-for="index in indexs" v-bind:class="{ 'active': cur == index}">      <a v-on:click="btnClick(index)">{{ index }}</a>    </li>    <li v-if="cur!=all"><a v-on:click="cur++,pageClick()">下一頁</a></li>    <li v-if="cur == all"><a class="banclick">下一頁</a></li>    <li><a>共<i>{{all}}</i>頁</a></li>  </ul></div><script type="text/javascript">var pageBar = new Vue({  el: '.page-bar',  data: {    all: 8, //總頁數    cur: 1//當前頁碼  },  watch: {    cur: function(oldValue , newValue){      console.log(arguments);    }  },     methods: {    btnClick: function(data){//頁碼點擊事件      if(data != this.cur){        this.cur = data       }    },    pageClick: function(){      console.log('現在在'+this.cur+'頁');    }  },    computed: {    indexs: function(){     var left = 1;     var right = this.all;     var ar = [];     if(this.all>= 5){      if(this.cur > 3 && this.cur < this.all-2){          left = this.cur - 2          right = this.cur + 2      }else{        if(this.cur<=3){          left = 1          right = 5        }else{          right = this.all          left = this.all -4        }      }     }    while (left <= right){      ar.push(left)      left ++    }    return ar    }       }})</script></body></html>

 以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南开区| 涞水县| 观塘区| 绥棱县| 拉萨市| 隆回县| 乌拉特中旗| 佛坪县| 江安县| 阜新市| 宜川县| 明水县| 富锦市| 镇赉县| 台北市| 温宿县| 峨山| 靖远县| 攀枝花市| 高尔夫| 普兰县| 芮城县| 高邮市| 富锦市| 平乐县| 梅河口市| 玉田县| 甘孜县| 九龙坡区| 依兰县| 达拉特旗| 信丰县| 措美县| 徐州市| 诸暨市| 临洮县| 桐柏县| 民勤县| 台南县| 双桥区| 岳池县|