亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

vue+element?分頁封裝的實現(xiàn)示例

 更新時間:2023年07月27日 09:04:56   作者:Wh1T3ZzT  
本文主要介紹了vue+element?分頁封裝的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

項目場景

分頁也是我們在實際應用當中非常常見的存在,其實分頁本身在element中做的就挺好的了,但是使用確實非常的多,所以還是有必要封裝一下,主要是為了減少代碼的冗余,以及提升開發(fā)的效率和降低后續(xù)維護的成本。

認識分頁

這是一段普通分頁的示例

<template>
  <div class="block">
    <span class="demonstration">完整功能</span>
    <el-pagination
      @size-change="handleSizeChange"
      @current-change="handleCurrentChange"
      :current-page="currentPage"
      :page-sizes="[100, 200, 300, 400]"
      :page-size="100"
      layout="total, sizes, prev, pager, next, jumper"
      :total="400">
    </el-pagination>
  </div>
</template>
 <script>
  export default {
    methods: {
      handleSizeChange(val) {
        console.log(`每頁 ${val} 條`);
      },
      handleCurrentChange(val) {
        console.log(`當前頁: ${val}`);
      }
    },
    data() {
      return {
        currentPage: 4
      };
    }
  }
</script>

效果是這樣的

在這當中用到了我們常用的七個字段:

1.current-page

:current-page="currentPage"

代表的是當前在第幾頁,并且可以輸入進行跳轉任意存在的頁數(shù),主要效果如下:

2.page-sizes

:page-sizes="[100, 200, 300, 400]"

用于設置分頁每頁顯示多少條,主要效果如下:

3.page-size

:page-size="100"

設置默認顯示多少條(這里默認為100條),主要效果如下:

4.layout

layout="total, sizes, prev, pager, next, jumper"

用于設置組件布局,子組件名用逗號分隔,效果如下:

字段說明:

  • total : 總頁數(shù)
  • sizes:一頁顯示多少條
  • prev:上一頁
  • pager:點擊頁數(shù)跳轉(只允許跳轉上下兩頁以及起止頁)
  • next:下一頁
  • jumper:輸入跳轉任意存在頁

5.total

:total="400"

展示總頁數(shù),效果如下。

6.size-change

@size-change="handleSizeChange"

7.current-change

@current-change="handleCurrentChange"

觸發(fā)事件,currentPage 改變時會觸發(fā),也就是修改每頁顯示多少條時觸發(fā)。

封裝分頁

弄清楚每個字段的意思后便可以進行封裝了。主要思路是,封裝的組件通過父組件將currentPage,total,sizes,pager,jumper傳入,并且在觸發(fā)@size-change,@current-change事件時,將事件信息傳給父組件。

創(chuàng)建paging

進行封裝

<!-- 
	author:Wh1T3ZzT
	component:分頁
	time:2023/07/25
-->
<template>
  <div class="paging">
    <el-pagination
        @size-change="handleSizeChange"
        @current-change="handleCurrentChange"
        :current-page="currentPage"
        :page-sizes="pageSizes"
        :page-size="pageSize"
        :layout="layout"
        :total="total">
      </el-pagination>
  </div>
</template>
<script>
export default {
  data(){
    return{
    }
  },
  props:{
    currentPage:{
      default(){
        return [];
      }
    },
    pageSizes:{
      default(){
        return [];
      }
    },
    pageSize:{
      default(){
        return [];
      }
    },
    layout:{
      default(){
        return [];
      }
    },
    total:{
      default(){
        return [];
      }
    }
  },
  methods:{
    handleSizeChange(val) {
      this.$emit('handleSizeChange',val)
      console.log(`傳給父組件:每頁 ${val} 條`);
    },
    handleCurrentChange(val) {
      this.$emit('handleCurrentChange',val)
      console.log(`傳給父組件:當前頁: ${val}`);
    },
  }
}
</script>
<style>
</style>

封裝完成!

頁面中使用:

引入

<template>
  <div>
    <Paging 
       :currentPage="1" 
       :pageSizes="[5,10,20,50,100]" 
       :pageSize="10" 
       layout="total, sizes, prev, pager, next, jumper" 
       :total="10" 
       @handleSizeChange="PagingSizeChange" 
       @handleCurrentChange="PagingCurrentChange"
     ></Paging>
  </div>
</template>
<script>
import Paging from '@/components/paging/index.vue'
export default {
	methods:{
    PagingSizeChange(val){
      console.log(`父組件接收到每頁: ${val} 條`);
    },
    PagingCurrentChange(val){
      console.log(`父組件接收到當前頁: ${val}`);
    },
	}
}
</script>

效果

到此這篇關于vue+element 分頁封裝的實現(xiàn)示例的文章就介紹到這了,更多相關vue element 分頁封裝內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論