Vueはプルダウンを実装してさらに読み込む

Vueはプルダウンを実装してさらに読み込む

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 を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • vue.js モバイル アプリでのプルアップ読み込みとプルダウン更新
  • Vue.js は、vux のプルアップ読み込みとプルダウン更新のサンプルチュートリアルを統合します。
  • Vue は Ajax スクロールとプルダウン読み込みを実装し、読み込み効果も備えています (推奨)
  • Vue が mint-ui loadmore を使用してプルアップ読み込みとプルダウン更新を実装し、ページで複数のプルアップ読み込みを使用する場合の競合問題を解決します。
  • Vue2.0 モバイル端末はプルダウン更新とプルアップ読み込みを実装します。
  • VueScrollはモバイルデバイス上でプルダウン更新とプルアップ読み込みを実装します
  • Vue プラグイン mescroll.js は、モバイル デバイスでのプルアップ読み込みとプルダウン更新を実装します。
  • Vueはbetter-scrollを使用してプルダウンリフレッシュとプルアップロードを実現します
  • Vueのプルダウン読み込みは実際にはそれほど複雑ではありません

<<:  Docker+daocloudはフロントエンドプロジェクトの自動構築とデプロイを実現します

>>:  Mysql でよく使用される時間、日付、変換関数の概要

推薦する

GZIP 圧縮 Tomcat と Web パフォーマンスの改善プロセス図

1. はじめに最近、あるプロジェクトに取り組んでいたのですが、サーバーからクライアントに返される J...

TomcatのmaxPostSize属性を設定する際に注意する必要がある問題を解決する

必要:近い将来、大容量ファイルのアップロード機能を実装します。フロントエンドフレームワークのアップロ...

CSS の画像パスの問題に関する議論 (同じパッケージ/異なるパッケージ)

CSS ファイルでは、背景を使用する、つまり背景画像を追加する必要がある場合があります。これは通常、...

Centos で MySQL パスワードを変更する方法

1. MySQL ログイン設定を変更します。 # vim /etc/my.cnf文を追加: skip...

Python MySQL データベース テーブルの変更とクエリ

Python は MySQL に接続してデータベース テーブルを変更およびクエリします。 pytho...

Linuxオンラインソフトウェアgccをオンラインでインストールする方法

Linux オンラインインストール関連コマンド: yum install: すべてインストールyum...

cobbler ベースの Linux システムを自動的にインストールする

1. コンポーネントをインストールする yum install epel-rpm-macros.no...

MySQLの基本操作学習ノートテーブル

テーブルを作成テーブルテーブル名を作成create table if not exists 表名 m...

Vue コンポーネントの切り替え、動的コ​​ンポーネント、コンポーネントのキャッシュについて

目次1. コンポーネント切り替え方式方法1: v-ifとv-elseを使用する方法 2: 組み込みコ...

Docker+nacos+seata1.3.0 のインストールと使用設定チュートリアル

これに先立ち、1日かけてやってみました。Seataは使い方が簡単で超シンプルですが、インストールや設...

Node.js のワーカー スレッドの詳細な理解

目次概要Node.js における CPU バウンド アプリケーションの歴史CPUを集中的に使用する操...

MySQL データベースのエンコーディングを utf8mb4 に変更する方法

utf8mb4 エンコーディングは utf8 エンコーディングのスーパーセットであり、utf8 と互...

FileZilla を使用して FTP ファイル サービスを素早く構築する方法

ファイルの保存とアクセスを容易にするために、FTPサービスが特別に構築されています。 FTP サーバ...

Ubuntu 18.04.4 に MySQL をインストールするプロセスの詳細な説明

Ubuntu 18.04.4 に MySQL をインストールするプロセスを見てみましょう。内容は次の...

Vueはランニングライトのシンプルな効果を実現

この記事では、マーキーのシンプルな効果を実現するためのVueの具体的なコードを参考までに共有します。...