1. 程式人生 > >vue分頁元件專案實踐

vue分頁元件專案實踐

最近開發後臺專案需要寫一個vue的分頁元件,所以把寫好的元件分享到這個上面加深一下印象:
看了下寫的還是比較多的最開始是父子元件之間的通訊。
父元件container裡面的內容

<template>
//模板
    <div>
        <div class="search">
            <input type="text" placeholder="請輸入要搜尋的內容">
        </div>
        <div class="content">
          <div class="lists">
            <ul>
              <li>
                <div>
                  <div class="displays">
                    <p>顯示時間:</p>
                    <p>顯示內容:</p>
                  </div>
                  <ul class="lists">
                    <li v-for="pages in pagedata">
                      <p v-text="pages.date"></p>
                      <p v-text="pages.message"></p>
                    </li>
                  </ul>
                </div>
              </li>
            </ul>
            <div class="page">//這裡面的就是呼叫的pagination的元件
              <pagination :total="total" @fetchDatas="fetchDatas"></pagination>
            </div>
          </div>
        </div>
    </div>

</template>

<script>
//js
    import pagination from "./pagination.vue";//通過import載入元件
    export default{
        name: 'container',
        components: {
          pagination
    },
    data(){
        return {
            pagination:0,      //獲取的頁數
            current:0,         //當前頁數預設為0
            getpage:'',        //獲取的接口裡面的資料
            pagedata:'',       //獲取的頁數裡面的資料
            total:''           //獲取的總條數
            pageNumber:10      //每頁顯示多少條
        }
    },
    munted(){
        this.fetchDatas(this.current,this.pageNumber) //呼叫函式把頁數和要顯示的條數傳進去
    },
    methods:{
        fetchDatas:async function (index,pN) {
            let params={
                index:'index',
                pagesize:'pN'
            };
            const res = await this.http.get(this.api.container,params)//獲取介面資料
            this.getpage = res.data.data //賦值
            this.pagedata = this.getpage.records //拿到資料介面裡自己想要顯示的
            this.total = this.getpage.total //拿到資料的總條數
        }
    }
</script>

<style>
//樣式
樣式就不寫了,身為前端自己除錯就OK了;
</style>

這是父元件裡面的介面的呼叫,下面就是子元件裡面需要把點選事件傳給父元件,然後父元件通過子元件傳遞的值來進行一系列的操作;
子元件pagination的內容:

    <templete>
        //模板
        <div class='page-warp'>
            <ul class='pagination'>
                <li :class="{'disabled':this.current < 1}">
                    <a href='javascript:;' @click='clickCurrent(current-1)'>
                        上一頁
                    </a>
                </li>
                <li :class="{'disabled':this.current < 1}">
                    <a href="javascript:;" @click="clickCurrent(0)" >
                        1
                    </a>
                </li>
                <li :class="{'disabled':this.current < 1}">
                    ···
                </li>
                <li v-for="page in pagination">
                    <a
                      :class="{skin:page == current+1,'disabled':page < current || page > current+2 || page == 1 || page == pagination }"
                      v-text="page"
                      href="javascript:;"
                      @click="clickCurrent(page-1)">
                    </a>
                </li>
                <li :class="{'disabled':this.current < 1}">
                    ···
                </li>
                <li :class="{'disabled': this.current+1 == pagination}">
                    <a v-text="pagination" href="javascript:;" @click="clickCurrent(pagination-1)">
                    </a>
                </li>
                <li :class="{'disabled': this.current+1 == pagination}">
                    <a href="javascript:;" @click="clickCurrent(current+1)">
                      下一頁
                    </a>
                </li>
                <li>
                    <a href="javascript:;">
                      共<span v-text="pagination"></span>頁
                    </a>
                </li>
            </ul>
        </div>
    </templete>

    <script>
        //js
        export default {
            name:'pagination',
            props:['total'],//父元件傳過來的總條數
            data(){
                return {
                    current:0,      //當前頁數
                    pagination:'',  //可以分的頁數
                    pageNum:10,     //每頁顯示的條數,預設為10
                    totals:''       //總條數
                }
            },
            watch:{
                //這裡用到了watch來監聽初始父元件傳過來的值
                total (e) {
                    this.totals = e;
                    this.pagination = Math.ceil(this.totals / this.pageNum);//拿到可以分的頁數
                }
            },
            methods:{
                //點選事件獲取當前頁數傳給父元件
                clickCurrent (index) {
                    if( index < 0 || index > this.pagination - 1 ){
                        return
                    }else {
                        this.current = index;
                        let data = {
                            index : index,
                            pN : this.pageNum
                        };
                        this.$emit('fetchDatas',data.index,data.pN);//這裡是關鍵點選事件裡面就是依靠$emit來傳值給父元件的,具體的可以參考vue的api
                        寫到這裡也基本上就完成了;
                    }
                }
            }
        }

    </script>

    <style>
        //樣式
        .pagination > li {
            display: inline;
          }

          .pagination > .disabled > a, .pagination > .disabled > a:hover, .pagination > .disabled > span, .pagination > .disabled > span:hover {
            color: #777;
            cursor: not-allowed;
          }

          .pagination > li > .skin {
            color: deepskyblue;
          }

          .pagination > li > a, .pagination > li > span {
            padding: 3px 5px;
            color: #000;
          }

          .disabled {
            display: none;
          }
    </style>

以上就是專案中寫的分頁元件,歡迎大家start,樣式有點簡陋大家湊合這看,相信身為前端的你一定會寫出來狂拽炫酷吊炸天的好看的樣式的~~~

相關推薦

vue元件專案實踐

最近開發後臺專案需要寫一個vue的分頁元件,所以把寫好的元件分享到這個上面加深一下印象: 看了下寫的還是比較多的最開始是父子元件之間的通訊。 父元件container裡面的內容 <template> //

100行程式碼實現一個vue元件

今天用vue來實現一個分頁元件,總體來說,vue實現比較簡單,樣式部分模仿了elementUI。所有程式碼的原始碼可以再github上下載的到:下載地址 先來看一下實現效果: 點選檢視效果 整體思路 我們先看一下使用到的檔案的目錄: 我們在 pageComponentsTe

vue元件

分頁元件接收引數有(pageNum)總頁數,返回父元件引數有(jumpData)頁碼數   實現思路是,先獲取資料的總頁數,把總頁數放入分頁元件裡面初始化按鈕, 每點選頁數按鈕或者上一頁,下一頁都會觸發返回頁碼數的資料給父元件, 父元件才是請求資料,然後渲染列表,實現了分頁效果 ​​​​&

vue 元件及props傳參

export default { name:'page', props: { // 用於記錄總頁碼,可由父元件傳過來 pageNo: { type: Number, default: 1 }, // 用於記錄當前頁數,這個與父元件進行資料互動來

Vue 元件 v2.0

背景 之前也寫過一個分頁元件,非常簡潔的一個分頁元件。 效果圖: 傳送門 點選預覽 程式碼也很簡單,看看就懂了。當頁數多起來的時候,問題也就來了。 這.......迫不得已,我把頁碼顯示的去掉,就成了 看著是沒啥問題,可是需求方不樂意了。。。 他們

基於Vue.js的表格元件

最近小熙在做Vue有關的專案需要前端分頁外掛,看到篇不錯的,特此轉載分享 有一段時間沒更新文章了,主要是因為自己一直在忙著學習新的東西而忘記分享了,實在慚愧。 這不,大半夜發文更一篇文章,分享一個自己編寫的一個Vue的小元件,名叫BootPage。 不瞭解Vue.js的

元件vue和jsp版本

vue版本 <template> <div class="com-vscroll"> <slot name="mcontent"></slot> <div class="loadcss"> &l

ElementUI元件+Vue

一. ElementUI分頁元件 1 官網 2 入門案例: 第一步:建立vue的基本頁面 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8

整理近期專案——元件+查詢功能+許可權展示3合頁面專案

近期完成小專案中含登入頁、首頁及詳情頁,其中運用到自封裝分頁元件及許可權頁面展示結合查詢功能。話不多說,進主題 login頁 index首頁 這裡先說需求,該介面分3種許可權,第一種、二種為管理員,管理員登入後無法新增資料,查詢條件只有已稽核及未稽核,顯示錶格中備案數量及

vue實現一個元件

Vue.component("page",{ template:"#page", data:function(){ return{ current:1, showItem:5, al

元件——vue

專案開發中,經常會遇到分頁功能,也會經常涉及元件化開發和元件複用,下列用vue對分頁元件進行了簡單封裝,具體程式碼如下: 原始碼: (1)app.vue程式碼段: <template> <div id="app"> <v-pagin

手把手教你使用Vue/React/Angular三大框架開發Pagination元件

    DevUI是一支兼具設計視角和工程視角的團隊,服務於華為雲DevCloud平臺和華為內部數箇中後臺系統,服務於設計師和前端工程師。官方網站:devui.designNg元件庫:ng-devui(歡迎Star) 引言 “他在正午、黃昏,在一天裡的許多時刻去感受它、記錄它,

vue 組件

pos ice let ini fun then 樣式 del sele Pagination.vue <template> <div class="pagination"> <span class="total">共{{t

milo的元件的使用

步驟: 1.需要引入milo.js 2.手寫一個分頁的樣式 3.分頁html程式碼 4.分頁js程式碼 <script src="//ossweb-img.qq.com/images/js/mobile_bundle/milo.js"></script>

vue效果(iview)

<template> <div> <Page :total="total" :current="startRow" :page-size="endRow" @on-change="pageChange" @on-page-size-change

Django框架(十五)—— Django元件

Django分頁元件 一、分頁器 資料量大的話,可以分頁獲取,檢視 例如:圖書管理中,如果有成千上萬本書,要是都在一個頁面中渲染出來,會影響頁面美觀,所以就要用分頁器分頁渲染 二、分頁器的使用 基本寫法 基本寫法: 後端: 總資料拿出來 生成分頁器Pagin

Django框架(十四)—— Django元件

Django分頁元件 一、分頁器 資料量大的話,可以分頁獲取,檢視 例如:圖書管理中,如果有成千上萬本書,要是都在一個頁面中渲染出來,會影響頁面美觀,所以就要用分頁器分頁渲染 二、分頁器的使用 基本寫法 基本寫法: 後端: 總資料拿出來 生成分頁器Pagin

angular2元件

建立一個分頁包 pagination,然後在裡面依次建立幾個檔案:  page.component.html 分頁元件的標籤內容  page.conponent.ts 分頁元件定義  pagination.ts 分頁元件所需配置資訊的物件 

怎樣將元件居中

  在網上我們下載的jQuery外掛(分頁),引入的js和css檔案之後,簡單的修改一下jQuery對分頁的顯示要求後,我們可以看到在指定的<div>區域中出現分頁的元件。 <body> <div id="callBackPagination" cla

【EasyUI篇】Pagination元件

微信公眾號: 關注可瞭解更多的教程。問題或建議,請公眾號留言; 17.Pagination分頁元件 注意 這個元件需要配合後臺實現,老規矩,使用SSM JSP檔案 <%--   Created by IntelliJ IDEA.