Element-UI に慣れた開発者なら、無限スクロールの InfiniteScroll が使いにくいという経験をしたことがあるかもしれません。プルダウン読み込みを実装する方法は 2 つあります。 1. el-table-infinite-scrollプラグインを使用する(1)プラグインをインストールする npm インストール --save el-table-infinite-scroll (2)世界規模での輸入と登録 // メイン.js 'el-table-infinite-scroll' から elTableInfiniteScroll をインポートします。 Vue.use(elTableInfiniteScroll); (3)ローカルファイルのインポート <スクリプト> // インポート import elTableInfiniteScroll from 'el-table-infinite-scroll'; エクスポートデフォルト{ // ディレクティブを登録: { 'el-table-infinite-scroll': elTableInfiniteScroll } } </スクリプト> (4)使用上の注意 <el-table :height="テーブルの高さ" v-el-table-infinite-scroll="さらに読み込む"> </el-table> (5)コード例 <テンプレート> <div class="アプリコンテナ"> <el-table :height="テーブルの高さ" v-el-table-infinite-scroll="さらに読み込む" :data="テーブルリスト"> <!-- 表のデータは省略--> </el-table> </div> </テンプレート> <スクリプト> // プラグインをインポートします。 import elTableInfiniteScroll from "el-table-infinite-scroll"; エクスポートデフォルト{ 名前: "インデックス", データ() { 戻る { // テーブルの高さ tableHeight:"", // データの総数 tableCount:0, // テーブルデータリスト tableList:[], // ロード中ですか? tableLoading: false, // テーブル検索条件 tableSearch:{ ページ:1 } } }, // ディレクティブを登録: { "el-table-infinite-scroll": elTableInfiniteScroll、 }, 作成された() { windowHeight を document.documentElement.clientHeight || document.body.clientHeight とします。 // テーブルの高さを動的に計算します。200 は、テーブル以外の画面上の他の要素の高さです。実際の状況によって異なります。 this.tableHeight = windowHeight - 200 + "px"; }, マウントされた(){ テーブルデータを取得します。 }, メソッド: { // テーブルデータをリクエストする getTableData(search) { page = search.page とします。 url = "index?page=" + page;とします。 // 初めてページを開くときは、データを一度読み込む必要があります。データが多すぎて自動的にスクロールがトリガーされないようにするには、読み込みを設定する必要があります。this.tableLoading = true; this.$http.get(url).then((結果) => { (res.code == 10000)の場合{ // データを連結します this.tableList = this.tableList.concat(result.data.list); this.tableCount = 結果.count; this.tableSearch.page = 結果.current; this.tableLoading = false; } }); }, // さらに読み込む loadMore() { if (!this.tableLoading) { this.tableLoading = true; this.tableList.length < this.tableCount の場合 { this.tableSearch.page++; テーブルデータを取得します。 } それ以外 { this.$message("すべてのデータが読み込まれました!"); this.tableLoading = false; } } }, } }; </スクリプト> 2. ドロップダウンの読み込み方法をカスタマイズする上記で使用したプラグインは、Element-UI に依存する必要があります。Element-UI を使用しない場合は、ドロップダウン ロードを自分で記述することしかできません。実装コードは次のとおりです。 <テンプレート> <div class="アプリコンテナ"> <div :style="{height:tableHeight,overflow:'auto'}" id="tableBox"> <!-- 表のデータは省略--> </div> </div> </テンプレート> <スクリプト> エクスポートデフォルト{ 名前: "インデックス", データ() { 戻る { // テーブルの高さ tableHeight:"", // データの合計数 tableCount:0, // テーブルデータリスト tableList:[], // ロード中ですか? tableLoading: false, // テーブル検索条件 tableSearch:{ ページ:1 } }; }, 作成された(){ windowHeight を document.documentElement.clientHeight || document.body.clientHeight とします。 // テーブルの高さを動的に計算します。200 はテーブル以外の画面上の他の要素の高さです。実際の状況によって異なります。 this.tableHeight = windowHeight - 200 + 'px'; }, マウント() { テーブルデータを取得します。 document.getElementById("tableBox").addEventListener('scroll',this.onTableScroll); }, 破棄する前に() { // リスニングイベントを削除します window.removeEventListener('scroll', this.onTableScroll) }, メソッド: { onTableScroll(){ var obj = document.getElementById("テーブルボックス"); var scrollHeight = obj.scrollHeight; var scrollTop = obj.scrollTop; var objHeight = obj.offsetHeight; // 100 はしきい値であり、実際の状況に応じて調整できます if(scrollHeight <= (scrollTop + objHeight + 100) && !this.tableLoading && this.tableList.length<this.tableCount){ this.tableLoading = true; this.tableSearch.page++; タイムアウトを設定します(()=>{ テーブルデータを取得します。 },300) } }, getTableData(検索){ page = search.page とします。 url = "index?page=" + page;とします。 // 初めてページを開くときは、データを一度読み込む必要があります。データが多すぎて自動的にスクロールがトリガーされないようにするには、読み込みを設定する必要があります。this.tableLoading = true; this.$http.get(url).then((結果) => { (res.code == 10000)の場合{ // データを連結します this.tableList = this.tableList.concat(result.data.list); this.tableCount = 結果.count; this.tableSearch.page = 結果.current; this.tableLoading = false; } }); }, }, }; </スクリプト> 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Docker+daocloudはフロントエンドプロジェクトの自動構築とデプロイを実現します
>>: Mysql でよく使用される時間、日付、変換関数の概要
1. はじめに最近、あるプロジェクトに取り組んでいたのですが、サーバーからクライアントに返される J...
必要:近い将来、大容量ファイルのアップロード機能を実装します。フロントエンドフレームワークのアップロ...
CSS ファイルでは、背景を使用する、つまり背景画像を追加する必要がある場合があります。これは通常、...
1. MySQL ログイン設定を変更します。 # vim /etc/my.cnf文を追加: skip...
Python は MySQL に接続してデータベース テーブルを変更およびクエリします。 pytho...
Linux オンラインインストール関連コマンド: yum install: すべてインストールyum...
1. コンポーネントをインストールする yum install epel-rpm-macros.no...
テーブルを作成テーブルテーブル名を作成create table if not exists 表名 m...
目次1. コンポーネント切り替え方式方法1: v-ifとv-elseを使用する方法 2: 組み込みコ...
これに先立ち、1日かけてやってみました。Seataは使い方が簡単で超シンプルですが、インストールや設...
目次概要Node.js における CPU バウンド アプリケーションの歴史CPUを集中的に使用する操...
utf8mb4 エンコーディングは utf8 エンコーディングのスーパーセットであり、utf8 と互...
ファイルの保存とアクセスを容易にするために、FTPサービスが特別に構築されています。 FTP サーバ...
Ubuntu 18.04.4 に MySQL をインストールするプロセスを見てみましょう。内容は次の...
この記事では、マーキーのシンプルな効果を実現するためのVueの具体的なコードを参考までに共有します。...