最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue2.0實現分頁組件的實例代碼

 更新時間:2017年06月22日 08:33:02   作者:wolfSoul  
這篇文章主要介紹了vue2.0實現分頁組件的實例代碼,需要的朋友可以參考下

最近使用vue2.0重構項目, 需要實現一個分頁的表格, 沒有找到合適的分頁組件, 就自己寫了一個, 效果如下:

該項目是使用 vue-cli搭建的, 如果你的項目中沒有使用webpack,請根據代碼自己調整:

首先新建pagination.vue文件, 所有組件的代碼都寫在這里, 寫這樣的組件并沒有什么太大的難度, 主要是解決父子組件之間值傳遞的問題

<template>
 <nav>
  <ul class="pagination">
   <li :class="{'disabled': current == 1}"><a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" @click="setCurrent(current - 1)"> « </a></li>
   <li :class="{'disabled': current == 1}"><a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" @click="setCurrent(1)"> 首頁 </a></li>
   <li v-for="p in grouplist" :class="{'active': current == p.val}"><a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" 
                                     @click="setCurrent(p.val)"> {{ p.text }} </a>
   </li>
   <li :class="{'disabled': current == page}"><a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" @click="setCurrent(page)"> 尾頁 </a></li>
   <li :class="{'disabled': current == page}"><a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" @click="setCurrent(current + 1)"> »</a></li>
  </ul>
 </nav>
</template>
<script type="es6">
 export default{
  data(){
   return {
    current: this.currentPage
   }
  },
  props: {
   total: {// 數據總條數
    type: Number,
    default: 0
   },
   display: {// 每頁顯示條數
    type: Number,
    default: 10
   },
   currentPage: {// 當前頁碼
    type: Number,
    default: 1
   },
   pagegroup: {// 分頁條數
    type: Number,
    default: 5,
    coerce: function (v) {
     v = v > 0 ? v : 5;
     return v % 2 === 1 ? v : v + 1;
    }
   }
  },
  computed: {
   page: function () { // 總頁數
    return Math.ceil(this.total / this.display);
   },
   grouplist: function () { // 獲取分頁頁碼
    var len = this.page, temp = [], list = [], count = Math.floor(this.pagegroup / 2), center = this.current;
    if (len <= this.pagegroup) {
     while (len--) {
      temp.push({text: this.page - len, val: this.page - len});
     }
     ;
     return temp;
    }
    while (len--) {
     temp.push(this.page - len);
    }
    ;
    var idx = temp.indexOf(center);
    (idx < count) && ( center = center + count - idx);
    (this.current > this.page - count) && ( center = this.page - count);
    temp = temp.splice(center - count - 1, this.pagegroup);
    do {
     var t = temp.shift();
     list.push({
      text: t,
      val: t
     });
    } while (temp.length);
    if (this.page > this.pagegroup) {
     (this.current > count + 1) && list.unshift({text: '...', val: list[0].val - 1});
     (this.current < this.page - count) && list.push({text: '...', val: list[list.length - 1].val + 1});
    }
    return list;
   }
  },
  methods: {
   setCurrent: function (idx) {
    if (this.current != idx && idx > 0 && idx < this.page + 1) {
     this.current = idx;
     this.$emit('pagechange', this.current);
    }
   }
  }
 }
</script>
<style lang="less">
 .pagination {
  overflow: hidden;
  display: table;
  margin: 0 auto;
  /*width: 100%;*/
  height: 50px;
 li {
  float: left;
  height: 30px;
  border-radius: 5px;
  margin: 3px;
  color: #666;
 &
 :hover {
  background: #000;
 a {
  color: #fff;
 }
 }
 a {
  display: block;
  width: 30px;
  height: 30px;
  text-align: center;
  line-height: 30px;
  font-size: 12px;
  border-radius: 5px;
  text-decoration: none
 }
 }
 .active {
  background: #000;
 a {
  color: #fff;
 }
 }
 }
</style>

使用時, 在父組件中引入, 代碼如下:

<template>
        <v-pagination :total="total" :current-page='current' @pagechange="pagechange"></v-pagination>
</template>
<script type="es6">
  import pagination from '@/components/common/pagination/pagination'
export default{
    data(){
 return {
        total: 150,     // 記錄總條數
        display: 10,   // 每頁顯示條數
        current: 1,   // 當前的頁數
},
 methods: {
     pagechange:function(currentPage){
       console.log(currentPage);
       // ajax請求, 向后臺發(fā)送 currentPage, 來獲取對應的數據
     }
   },
components: {
      'v-pagination': pagination,
    }
}
</script>

至此, 一個基于 vue2.0 的分頁組件就完成了

相關文章

  • vue項目中如何添加枚舉

    vue項目中如何添加枚舉

    這篇文章主要介紹了vue項目中如何添加枚舉,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Vue-Router路由守衛(wèi)詳的細用法教程

    Vue-Router路由守衛(wèi)詳的細用法教程

    在Vue.js應用中,Vue-Router是一個非常重要的插件,它允許我們實現頁面間的導航,然而,僅僅實現導航是不夠的,我們還需要在導航的不同階段進行各種操作,本文將結合實際案例,詳細介紹Vue-Router路由守衛(wèi)的用法,需要的朋友可以參考下
    2024-12-12
  • Vue?Router中Matcher的初始化流程

    Vue?Router中Matcher的初始化流程

    這篇文章主要介紹了Vue?Router中Matcher的初始化流程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • Vue-cli-webpack搭建斗魚直播步驟詳解

    Vue-cli-webpack搭建斗魚直播步驟詳解

    斗魚直播是比較火的直播視頻,想必大家都看過吧。這篇文章主要介紹了Vue-cli-webpack搭建斗魚直播步驟詳解,需要的朋友可以參考下
    2017-11-11
  • Vue實現數值型輸入框并限制長度

    Vue實現數值型輸入框并限制長度

    這篇文章主要介紹了Vue實現數值型輸入框并限制長度,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • 一文讀懂vue動態(tài)屬性數據綁定(v-bind指令)

    一文讀懂vue動態(tài)屬性數據綁定(v-bind指令)

    這篇文章主要介紹了vue動態(tài)屬性數據綁定(v-bind指令)的相關資料,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-07-07
  • Vue-resource實現ajax請求和跨域請求示例

    Vue-resource實現ajax請求和跨域請求示例

    本篇文章主要介紹了Vue-resource實現ajax請求和跨域請求示例,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • Vue組件公用方法提取mixin實現

    Vue組件公用方法提取mixin實現

    這篇文章主要介紹了Vue組件公用方法提取mixin實現,多個組件共用一個方法時可以用?mixin?抽取到一個js文件中,作為共用方法,下面一起進入文章了解更多詳細內容吧
    2022-03-03
  • Vant2移動端Vue組件庫問題記錄

    Vant2移動端Vue組件庫問題記錄

    Vant是一套輕量、可靠的移動端組件庫,通過Vant可以快速搭建出風格統(tǒng)一的頁面,提升開發(fā)效率,下面這篇文章主要給大家介紹了關于Vant2移動端Vue組件庫問題的相關資料,需要的朋友可以參考下
    2023-01-01
  • nuxt實現封裝axios并且獲取token

    nuxt實現封裝axios并且獲取token

    這篇文章主要介紹了nuxt實現封裝axios并且獲取token,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10

最新評論

钟祥市| 涟源市| 洪泽县| 信丰县| 阜新| 浦北县| 清流县| 大关县| 巨野县| 河南省| 新邵县| 汽车| 霍林郭勒市| 永德县| 铅山县| 肥城市| 吉木萨尔县| 梁平县| 武冈市| 汶川县| 厦门市| 武平县| 花莲市| 蕲春县| 汶川县| 江北区| 明星| 礼泉县| 新乡县| 邹城市| 安图县| 雅安市| 鹿泉市| 镇平县| 义马市| 定结县| 田东县| 阜宁县| 松滋市| 宣武区| 潞西市|