1. 程式人生 > >分頁元件vue和jsp版本

分頁元件vue和jsp版本

vue版本

<template>
  <div class="com-vscroll">
      <slot name="mcontent"></slot>
      <div class="loadcss">
          <img src="https://sta.caotangteach.com/static/com.mianfeinovel/images/common/mianfeinovel_loading.gif" class="loadimg" v-if="loading&&isFullLoad==1
"> <div v-if="isFullLoad==1">正在載入更多...</div> <div v-if="isFullLoad==0">沒有更多資料了</div> </div> </div> </template> <script> export default { name: "ComVscroll", props: { isFullLoad: { type: Number, default
: 0 }, watchCount: { type: Number, default: 0 } }, data() { return { loading: true, }; }, methods: { fetchData() { if (this.loading) { return; } if (this.loading==false) {
this.loading = true; this.$emit("onPullingUp"); } }, scrollEventFunc() { //當開啟一個頁面,一定會執行這裡 var a = document.documentElement.clientHeight || document.body.clientHeight; var b = document.documentElement.scrollTop || document.body.scrollTop; var c = document.documentElement.scrollHeight || document.body.scrollHeight; if (a + b + 300 >= c) { this.fetchData(); } } }, watch: { watchCount(value) { //根據上一頁的結果,唯一能再次發介面的條件 this.loading = false; } }, mounted() { if (window.addEventListener) { window.addEventListener("scroll", this.scrollEventFunc, false); } else if (window.attachEvent) { window.attachEvent("scroll", this.scrollEventFunc); } } }; </script> <style lang="stylus" scoped> .com-vscroll { .loadcss { display: -webkit-box; -webkit-box-pack: center; height: 82px; line-height: 82px; font-size: 0.32rem; color: #5D646E; .loadimg { margin-right: 10px; margin-top :2px; height: 0.32rem; width: 0.32rem; } } } </style>

頁面引用的時候:

      <ComVscroll @onPullingUp="ClickPullup" :isFullLoad="hasMoreload"  :watchCount="watchCount">
        <div slot="mcontent">
          <div class="page-mid">
            <div class="mid-content">
              <ComVlist :remenOptions="remenOptions" :hasMidBtn="identity<4" :dlist="Array.from(pageDatas[mtype])" :dadianParams="dadianParams"></ComVlist>
            </div>
          </div>
        </div>
      </ComVscroll>

 

第一次介面由頁面的created或者路由監聽執行。以後的分頁才由scroll執行。

jsp版如下:

loadMore();   //主動執行第一次
    function scrollEventFunc() {
        var a = document.documentElement.clientHeight || document.body.clientHeight;
        var b = document.documentElement.scrollTop || document.body.scrollTop;
        var c = document.documentElement.scrollHeight || document.body.scrollHeight;
        if (a + b + 300 >= c) {
            try {
                
                loadMore();
                
            } catch (e) {

            }
        }
    }
    if (window.addEventListener) {
        window.addEventListener("scroll", scrollEventFunc, false);
    } else if (window.attachEvent) {
        window.attachEvent("scroll", scrollEventFunc);
    }
    var pageNum = 0; //頁碼
    var pageSize = 10; //每頁載入條數
    var lastPage = false; //最後一頁
    var loading = false; //正在載入
    var rankIndex=0;
    function loadMore(){
        if (lastPage) { //已經是最後一頁了,不再請求
            return;
        }
        if (loading) { //正在載入
            return;
        }
        loading = true;
        pageNum++;
        $('.nothing').hide();
        $('.loading').show();
        if (sextype==1) {
            var fenpin="man";
        }else{
            var fenpin="woman";
        }
        var url = window.J_search.buildAjaxUrl("/aa/aa/aa/list/"+pageSize+"/"+pageNum+"?sex="+fenpin);
        $.ajax({
            type: 'GET',
            url: url,
            async: false,
            timeout: 10000,
            success: function (returnData) {
                if (returnData.respCode == "20000") {
                    var dataList=returnData.data;
                    if (dataList == null || dataList.length == 0) {
                        lastPage = true;
                        loading = false; //載入結束
                        $(".nothing").show();
                        $('.template-207').hide();
                        return;
                    }
                    var cnxhStr='';
                    if(dataList&&dataList.length>0) {
                        $.each(dataList, function (i, n) {
                            rankIndex++;
                            var seriaType=(n.serialStatus == 'SERIALIZE')?"連載中":"已完結";
                            //判斷二級分類是否為空
                            var label = n.label;
                            if(label == null || label == ''){
                                label = '其他';
                            }
                            cnxhStr += '<div class="topPart book_top_1 rank' + i + ' getRank" onclick=\'click_Event("' + n.host + '","' + n.bookId + '","' + n.id + '","' + n.bookName + '","' + n.authorName + '","","","0","猜你喜歡","' + (rankIndex) + '")\'><div class="imgBox" ><img src="https://st.quanbennovel.com/static/images/default.png" data-src="' + n.sourceImageUrl + '"></div>';
                            cnxhStr += '<div class="des"><p class="name">' + n.bookName + ' </p><p class="details"> ' + n.description + '</p><div class="arAndpeo clearfix"><span class="author"> ' + n.authorName + '</span><span class="desLabel"><i class="firstLabel"> ' + label + ' </i></span></div></div></div>';
                        });
                        if (sextype==1) {
                            $("#man .cnxh").append(cnxhStr);
                        }
                        if (sextype==2) {
                            $("#woman .cnxh").append(cnxhStr);
                        }
                        try {
                            $(document).trigger('ajax:finish', pageNum - 1); //處理圖片載入失敗
                        } catch (err) {

                        }

                        loading = false; //載入結束
                        lazyload("container"); //圖片懶載入
                    }

                }else {
                    loading = false; //載入結束
                    return;
                }
            },
            error: function (xhr, type, textStatus) {
                loading = false;
            }
        });
    }