httml+vue.jsは綺麗なページ機能を実現してIEに対応できます。


機能が比較的簡単である場合、単一のhtmlでvue.jsページの展示データを使用して、足場を設置していない、または関連UIフレームを使用している場合、改ページ器を手書きで書く必要があります。最も合理的で最も便利な解決策です。
まず効果を見てみます。
 
 上のコード:
1.簡単にCSSをやってみます。ここのコードは折りたたみがあります。
2.簡単にHTMLを作る 

<div id="app" v-cloak @click="showOption=false">
  {{pageIndex}} ,     {{pageSize}} 
 <div v-show="pageTotalNum > 1" class="pageContainer">
   {{dataListLength}} 
 <ul class="pagesInner">
  <li class="page" @click="prevOrNext(-1)"><span aria-hidden="true">&lt;</span></li>
  <li class="page" v-for="(item, index) in pages" :key="index" :class="{actived: item == pageIndex}" @click="selectPage(item)">
  <span>{{item}}</span>
  </li>
  <li class="page" @click="prevOrNext(1)"><span class="fa fa-chevron-right" aria-hidden="true">&gt;</span></li>
 </ul>
 <div class="page-size-box">
  <span @click.stop="showOption=!showOption">{{pageSize}} / </span>
  <ul class="size-option" v-show="showOption">
  <li v-for="(item, index) in pageSizeList" :key="index" @click="pageSize=item;showOption=false">{{item}} / </li>
  </ul>
 </div>
   &nbsp;
  <form id="frm1">
   <input type="text" v-model="goToPage" style="text-align: center;">
  </form>
 &nbsp; &nbsp;
 button @click="handleGoToPage">  </button>
 </div>
</div>
 3.仕事をしました
まず、改ページ機能の実現構想を分析します。

  • 最初のページと最後のページは常に表示されます。

  • データ総条数data ListLength及び各ページの表示条数pageSizeにより、総ページ数pageTotalNumを算出する。

  • ウォッチをモニターして、各ページにページ数pageSizeを表示し、現在のページ番号のPageIndex=1をリセットします。

  • 私が設計したページは毎回最大5つのページ番号を表示します。(みんなは必要に応じて自分で調整できます。)

  • ページ総数と現在のページ番号の切り替えによって、ページの展示形態が異なります。
  • 総ページ数<=1は、セパレータを表示しません。
    総ページ数<=5&総ページ数>1は、すべてのページ番号を表示します。
    総ページ数>5&&現在のページ<=3、最後から2番目のページ番号は…で、ページ番号は左から右へ計算します。
    総ページ数>5&現在ページ>3&現在ページ<総ページ数-3、正後ろから2番目のページ番号は…で、ページ番号は現在のページ番号で計算されます。±1
    総ページ数>5&現在ページ>3&現在ページ>総ページ数-3、正数第二のページ番号は…で、ページ番号は右から左へ計算されます。
    
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script src="https://cdn.polyfill.io/v2/polyfill.min.js"></script> 	<!--  IE -->
    <script>
     var app = new Vue({
     el: "#app",
     data: {
      pageIndex: 1,
      goToPage: '',
      // pageTotalNum: 16,
      dataListLength:147,
      pageSize:20,
      pageSizeList:[20,30,50,100],
      showOption:false
     },
     methods: {
      prevOrNext: function(n) {
      this.pageIndex += n
      this.pageIndex <= 1 ? this.pageIndex = 1 : this.pageIndex > this.pageTotalNum ? this.pageIndex = this.pageTotalNum : null
      },
      selectPage: function(n) {
      if (n === this.pageIndex) return
      if (typeof n === 'string') return
      this.pageIndex = n
      },
      handleGoToPage: function() {
      this.pageIndex = this.goToPage <= 1 ? 1 : this.goToPage - 0 >= this.pageTotalNum - 0 ? this.pageTotalNum :
      this.goToPage
      this.goToPage = this.pageIndex
      },
     },
     computed: {
      pageTotalNum:function(){
      return this.dataListLength % this.pageSize == 0 ? this.dataListLength / this.pageSize : Math.floor(this.dataListLength / this.pageSize) + 1
      },
      pages: function () {
      //       5   
      var c = this.pageIndex
      var t = this.pageTotalNum
      var p = []
      for (var i = 1; i <= t; i++) {
       p.push(i)
      }
      var l = p.length
      if (l <= 5) { //    <=5,      
       return p
      } else if (l > 5 && c <= 3) { //    >5 &&     <=3
       return [1, 2, 3, 4, '...', t] 
      } else if (l > 5 && c > 3 && c <= l - 2) { //     > 5 &&      > 3 &&     <     - 3
       return [1, '...', c - 2, c - 1, c, '...', t] 
      } else { //     > 5 &&      > 3 &&     >     - 3
       return [1, '...', t - 3, t - 2, t - 1, t] 
      }
      },
     },
     watch:{
      pageSize:function(nv,ov){
      this.pageIndex = 1
      }
     }
     });
    </script>
    ここでhttml+vue.jsの綺麗なページ機能を実現するためのIE対応記事を紹介します。これまでの記事を検索したり、下記の関連記事を見たりしてください。これからもよろしくお願いします。