91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用vue如何實現一個分頁組功能

發布時間:2022-05-06 14:07:42 來源:億速云 閱讀:344 作者:iii 欄目:大數據

本文小編為大家詳細介紹“使用vue如何實現一個分頁組功能”,內容詳細,步驟清晰,細節處理妥當,希望這篇“使用vue如何實現一個分頁組功能”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

文件的目錄:

使用vue如何實現一個分頁組功能

我們在 pageComponentsTest.vue 頁面引入了 pageComponent.vue 分頁組件。整體思路是通過 props
來達到組件的靈活通用的效果,整體語法是使用vue的VM語法。

pageComponent.vue實現

首先實現一個分頁,需要知道數據總條數,一個頁面顯示的數據條數和當前顯示第幾頁的數據。那么我們在 pageComponent.vue 里面的 props 就有了。看下面的代碼:

props: {
   // 分頁配置
   pageConfig: {
    type: Object, require: true, default() {
     return {
      pageSize: 10,   //一頁的數據條數
      pageNo: 0,    //當前頁的索引
      total: 0,     //總的數據條數
      pageTotal: 0   //總的頁數
     }
    }
   }

根據用戶入參,我們可以使用計算屬性來計算一個總頁數的變量:

computed: {
   //計算總頁數,如果傳了pageTotal,直接取pageTotal的值,如果傳了total,那么根據pageSize去計算
   pageTotal(){
    const config = this.pageConfig
    if(config.pageTotal){
     return config.pageTotal
    }else {
     if(config.pageSize && config.total){
      return Math.ceil(config.total/config.pageSize)
     }else {
      return 0
     }
    }
   }
  }

有了總頁數,和當前頁,就需要各種判斷來實現我們的html部分了,這里分4中情況

  1. 總頁數小于8,只需要直接遍歷到8就行了。

  2. 總頁數大于8,但當前頁小于4的。

  3. 總頁數大于8,當前頁靠后的。

  4. 總頁數大于8,當前頁在中間的。

下面看具體的實現:

<!--上一頁-->
   <button @click="prePage" :disabled="currentPage === 1">上一頁</button>
   <!--總頁數小于8的-->
   <template v-if="pageTotal <= showPageNo">
    <button v-for="i in pageTotal" @click="changeCurrentPage(i)" :class="{active:i === currentPage}" :key="i">{{i}}</button>
   </template>
   <template v-else-if="currentPage < 4">
    <button v-for="i in 6" @click="changeCurrentPage(i)" :class="{active:i === currentPage}" :key="i">{{i}}</button>
    <button :disabled="true">···</button>
    <button>{{pageTotal}}</button>
   </template>
   <template v-else-if="currentPage > pageTotal - 4">
    <button>1</button>
    <button :disabled="true">···</button>
    <button v-for="i in 6" @click="changeCurrentPage(i + (pageTotal - 6))" :class="{active:(i + (pageTotal - 6)) === currentPage}" :key="i">{{i + (pageTotal - 6)}}</button>
   </template>
   <template v-else>
    <button>1</button>
    <button :disabled="true">···</button>
    <button @click="changeCurrentPage(currentPage - 2)">{{currentPage - 2}}</button>
    <button @click="changeCurrentPage(currentPage - 1)">{{currentPage - 1}}</button>
    <button class="active">{{currentPage}}</button>
    <button @click="changeCurrentPage(currentPage + 1)">{{currentPage + 1}}</button>
    <button @click="changeCurrentPage(currentPage + 2)">{{currentPage + 2}}</button>
    <button :disabled="true">···</button>
    <button @click="changeCurrentPage(pageTotal)">{{pageTotal}}</button>
   </template>
   <!--下一頁-->
   <button @click="nextPage" :disabled="currentPage === pageTotal">下一頁</button>

可以看到頁面上需要實現3個方法,分別是上下頁,和點擊頁面的方法。

methods: {
   prePage(){
    this.currentPage -= 1
    this.$emit('changeCurrentPage',this.currentPage)
   },
   nextPage(){
    this.currentPage += 1
    this.$emit('changeCurrentPage',this.currentPage)
   },
   changeCurrentPage(i){
    this.currentPage = i
    this.$emit('changeCurrentPage',this.currentPage)
   }
  }

以上就是 pageComponent.vue 的大致實現了,每次頁面改變,都會觸發一個 changeCurrentPage 方法的回調,用來通知當前使用組件的頁面當前頁已經改變。

pageComponentsTest.vue的實現

引用頁面就比較簡單了,只要傳入組件需要的對應的參數,就能顯示我們的組件了。 引用部分:

<template>
 <div class="pageComponentsTest">
  <page-component :page-config="pageConfigTotal" @changeCurrentPage="changePage"></page-component>
  <page-component :page-config="pageConfigPageTotal"></page-component>
 </div>
</template>

配合入參部分:

{
  name: "pageComponentsTest",
  data() {
   return {
    pageConfigTotal:{total:21,pageSize:10,pageNo:1},
    pageConfigPageTotal:{total:21,pageSize:10,pageNo:1,pageTotal:50}
   }
  },
  components:{'page-component':pageComponent},
  methods: {
   changePage(page){
    this.pageConfigTotal.pageNo = page
   }
  }
 }

讀到這里,這篇“使用vue如何實現一個分頁組功能”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

vue
AI

林甸县| 七台河市| 清河县| 什邡市| 南皮县| 余干县| 鲜城| 鹿泉市| 民丰县| 宜都市| 日照市| 南京市| 米泉市| 宾阳县| 吴忠市| 宜都市| 新巴尔虎左旗| 浪卡子县| 兰溪市| 防城港市| 凌海市| 开化县| 怀化市| 长春市| 衡山县| 庄浪县| 改则县| 安宁市| 株洲县| 固始县| 衡南县| 乌兰浩特市| 泗阳县| 台南县| 镇康县| 连城县| 宁安市| 壤塘县| 横峰县| 冕宁县| 宜城市|