この記事では、Vueのフロントエンドページングとバックエンドページングを実装する方法を説明します。

この記事では、Vueのフロントエンドページングとバックエンドページングを実装する方法を説明します。

1: フロントエンドの手書きページング(データ量が少ない場合)

フロントエンドではスライスインターセプションを使用する必要があります: tableData((page-1)pageSize,pagepageSize)

クリップボード.png

クリップボード1.png

2: バックエンドのページング、フロントエンドは渡されたページとページサイズのみに注意を払う必要があります

3: フロントエンドの手書きページングボタン

<本文>
  <div id="アプリ">
    <table class="table table-bordered table-condensed">
      <tr class="bg-primary">
        <th class="text-center">並べ替え</th>
        <th class="text-center">ユーザー名</th>
        <th class="text-center">ユーザーの性別</th>
        <th class="text-center">都市</th>
      </tr>
      <tr class="text-center active" v-for="(v,i) リスト内" :key="i">
        <td>{{num(i)}}</td>
        <!-- <td>{{params.pagesize}}</td> -->
        <td>{{v.name}}</td>
        <td>{{v.sex}}</td>
        <td>{{v.addr}}</td>
      </tr>       
    </テーブル>
    <nav aria-label="ページナビゲーション" style="text-align: center;">
      <ul class="ページネーション">
        <!-- 前のページ -->
        <li @click="prePage()" :class="{'disabled':params.page == 1}">
          <a aria-label="前へ">
            <span aria-hidden="true">&laquo;</span>
          </a>
        </li>
        <li :class="{'active': params.page == page}" v-for="(page,index) ページ内" :key="index" @click="curPage(page)">
          <a style="cursor: ポインター;">
            {{ページ}}
          </a>
        </li>
        <!-- 次のページ -->
        <li :class="{'disabled':params.page == totalPage}" @click="next()">
          <a aria-label="次へ">
            <span aria-hidden="true">&raquo;</span>
          </a>
        </li>
      </ul>
    </nav>
  </div>
</本文>
window.onload = 関数(){
  // 1秒間に1つのリクエスト(トリガーイベント)のみが許可されます(複数のクリックは許可されます)スロットル
  新しいVue({
    el: '#app',
    データ: {
      パラメータ:{
        ページ:1,
        ページサイズ:20,
        名前:''
      },
      リスト: [],
      total:0, //エントリの総数 totalPage:0, //ページの総数 flag: false,
    },
    作成された() {
      この.getData()
    },
    計算: {
      ページ() {
        totalPage を this.totalPage とします。
        page = this.params.page; とします。
        // ページの総数が 10 未満です if(totalPage < 10) return totalPage;
        // 総ページ数が 10 より大きい場合は省略記号を追加します if (page <= 5) { // 最初の 5 ページ // (1) ページ番号が 5 未満の場合は、左側に 6 ページが表示されます return [1,2,3,4,5,6,'...',totalPage]
        } else if (page >= totalPage - 5) { // 次の 5 ページ console.log("trigger")
          // (2) ページ番号が総ページ数 - 5 より大きい場合、右側に 6 つの戻り値が表示されます: [1,'...',totalPage-5,totalPage-4,totalPage-3,totalPage-2,totalPage-1,totalPage]
        } else { // 中央の 5 ページ // (3) ページ番号は 5-(totalPage-5) の間です。左の間隔は 5 未満にすることはできず、右の間隔はページ総数 totalPage より大きくすることはできません。左の現在のページ番号は 1 未満にすることはできず、右の現在のページ + 番号はページ総数より大きくすることはできません。 return [1,'...',page-1,page,page+1,page+2,page+3,'...',totalPage]
        }
      },
      数値() {
        {ページサイズ、ページ} = this.params
        // (1-1) * 10 + 10 + 0 + 1 = 1;
        // (2-1) * 10 + 10 + 0 + 1 = 11 
        // 最初のページ = (現在のページ - 1) * ページあたりのエントリ数 + インデックス値 + 1。1 から始まることを確認してください。 return i => (ページ - 1) * ページサイズ + i + 1 // (現在のページ - 1 * ページあたりのエントリ数) + インデックス値 + 1
      }
    },
    メソッド: {
      取得データ() {
        if(this.flag) 戻り値:
        this.flag = true;
        // 以下はタイマーと同等です axios.get('http://localhost:3000/user/listpage',{params:this.params}).then(res => {
          コンソールログ('res',res.data.users)
          合計ユーザー数を res.data.users とします。
          this.total = 合計;
          this.totalPage = Math.ceil( this.total / this.params.pagesize);
          this.list = ユーザー
          this.flag = false;
        })
      },
      curPage(ページ) {
        if(page == '...') 戻り値 
        if(this.flag) 戻り値:
        this.params.page = ページ;
        この.getData()
      },
      プレページ() {
        // if (this.params.page == '...') 戻り値 
        (this.params.page > 1)の場合{
          if(this.flag) 戻り値:
          --this.params.page;
          console.log('ページ',this.params.page)
          この.getData()
        }
      },
      次() {
        // if (this.params.page == '...') 戻り値 
        if(this.flag) 戻り値:
        console.log("実行", this.totalPage)
        this.params.page が this.totalPage より小さい場合、
          ++このパラメータページ;
          console.log('ページ',this.params.page)
          この.getData()
        }
      },
     } 
  })
}

画像.png

要約する

この記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。

以下もご興味があるかもしれません:
  • vue+Element-uiフロントエンドでページング効果を実現
  • Vueはフロントエンドページングの完全なコードを実装します
  • Vue.jsはブートストラップフロントエンドを組み合わせてページングとソート効果を実現します
  • フロントエンドとバックエンドの構成とVueページングプラグインの使用

<<:  サーバーから返される14の一般的なHTTPステータスコードの詳細な説明

>>:  MySQL マルチバージョン同時実行制御 MVCC の実装

推薦する

JavaScriptの詳細な説明 thisキーワード

目次1. はじめに2.これを理解する3. これは誰ですか? 4.矢印関数はさらに読む要約する1. は...

Docker 構成 Alibaba Cloud イメージアクセラレーション プル実装

今日はdockerを使ってイメージをpullしたのですが、速度が悪くて見れず最後まで待ち続けました。...

CSS導入方法4つのまとめ(共有)

1. インライン参照:ラベルに直接使用されるが、メンテナンスコストが高い スタイル='フォ...

MySql ストアド プロシージャ パラメータの初歩的な使用法の詳細な説明

パラメータでのストアドプロシージャの使用IN パラメータは、プロシージャに情報を渡すためにのみ使用さ...

Windows 10 での MySQL 5.7.21 winx64 のインストールと設定方法のグラフィック チュートリアル

mysql 5.7.21 winx64 のインストールと設定方法: MySQLのコミュニティバージョ...

Nginx 1つのドメイン名で複数のプロジェクトにアクセスする方法の例

背景最近、複数のプロジェクトを展開する際に、1 つのドメイン名で複数のプロジェクトにアクセスする方法...

実行中の時計を実装するための純粋な CSS3 コード

操作効果コードの実装html <div id="ウォッチ"> <...

CSS コンテンツ属性を使用して、マウスホバープロンプト (ツールチップ) 効果を実現します。

なぜこのような効果を実現するのでしょうか。実は、この効果もタイトルプロンプトから派生したものですが、...

MySQL コード実行構造例の分析 [シーケンス、分岐、ループ構造]

この記事では、例を使用して MySQL コード実行構造について説明します。ご参考までに、詳細は以下の...

MySQL における int の最大値の詳細な説明

導入2日前に見た問題について詳細に書きます。バイトコンピューターがバイナリに基づいていることは誰もが...

Js クラスの構築と継承のケースの詳細な説明

JS のクラスの定義や継承は本当に多様なので、別のノートブックを開いて記録しておきます。意味オブジェ...

Vue はグラフィック検証コードログインを実装します

この記事では、グラフィック認証コードログインを実装するためのVueの具体的なコードを参考までに紹介し...

JavaScript を使用して QR コードを解析する 3 つの方法

目次1. JavaScriptを使用してQRコードを解析する1. QR コードとは何ですか? 2.q...

Linux でリモートから MySQL を自動的にバックアップする方法

序文:基本的に、自社で使用する場合でも、顧客向けにサーバーを展開する場合でも、MySQL のバックア...

Nginx 書き換えジャンプの適用シナリオの詳細な説明

アプリケーションシナリオ1: ドメイン名ベースのリダイレクト会社の古いドメイン名は www.accp...