使用vue分頁插件vue-pagination

參考前輩的demo,所以先放上原demo的git地址:??

https://github.com/cycgit/vue-pagination

Paste_Image.png

按照慣例,先引入必須的資源,然后在項(xiàng)目的html中加入分頁模板:

 <div id="app" >
         <vue-nav :cur="cur" :all="all" :url="url" :callback="callback"></vue-nav>
 </div>

js代碼照樣搬就可以了:

var app = new Vue({
                el: '#app',
                data:{
                    cur: 1,
                    all: 23,
                    url:'localhost:6677/queryList'
                },
                components:{
                    'vue-nav': Vnav
                },
                methods:{
                    callback(data) {
                        //TODO
                    }
                }
            })

這里 cur是當(dāng)前頁,all是總頁數(shù),url是查詢列表服務(wù)的url地址,然后看一下組件的處理

(function () {
    var tm = '<div class="page-bar">' +
        '<ul>' +
        '<li v-if="cur!=1" style="margin-left: 10px"><a @click="btnClick(cur-1)">上一頁</a></li>' +
        '<li v-for="index in indexs" v-bind:class="{ active: cur == index}" style="margin-left: 10px">' +
        '<a v-on:click="btnClick(index)" >{{ index }}</a>' +
        '</li>' +
        '<li v-if="cur!=all" style="margin-left: 10px"><a @click="btnClick(cur+1)">下一頁</a></li>' +
        '<li style="margin-left: 10px"><a>共<i>{{all}}</i>頁</a></li>' +
        '</ul>' +
        '</div>'

    var navBar = Vue.extend({
        template: tm,
        props: {
            cur: {
                type: [String, Number],
                required: true
            },
            all: {
                type: [String, Number],
                required: true
            },
            url: {
                type: [String, Number],
                required: true
            },
            callback: {
                default() {
                    return function callback() {
                        // todo
                    }
                }
            }
        },
        computed: {
            indexs() {
                var left = 1
                var right = this.all
                var ar = []
                if (this.all >= 11) {
                    if (this.cur > 5 && this.cur < this.all - 4) {
                        left = this.cur - 5
                        right = this.cur + 4
                    } else {
                        if (this.cur <= 5) {
                            left = 1
                            right = 10
                        } else {
                            right = this.all
                            left = this.all - 9
                        }
                    }
                }
                while (left <= right) {
                    ar.push(left)
                    left++
                }
                return ar
            }
        },
        methods: {
            btnClick(page) {
                if (page != this.cur) {
                    this.callback(page)
                }
                //這里可以發(fā)送ajax請求
            }
        }
    })

    window.Vnav = navBar

})()

整個(gè)插件整合之后的效果如下:

Paste_Image.png

謝謝觀賞! ??

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容