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 でよく使用される時間、日付、変換関数の概要

推薦する

HTML テーブルタグチュートリアル (26): セルタグ

<TD> タグの属性は、テーブル内のセルのプロパティを設定するために使用されます。表 &...

MySQL における TIMESTAMPDIFF ケースの詳細な説明

1.構文TIMESTAMPDIFF(unit,begin,end); 単位に従って時間差を返します。...

winx64 での mysql5.7.19 の基本的なインストール プロセス (詳細)

1. ダウンロード参考: https://www.jb51.net/softs/451120.ht...

threejs でリアルタイムポリゴン屈折を実装する方法

目次序文ステップ1: セットアップと前方屈折ステップ2: 反射とフレネル方程式ステップ3: 多面屈折...

SQL重複排除方法の概要

SQL を使用してデータを抽出する場合、テーブル内で重複した値に遭遇することがよくあります。たとえ...

Typescriptの基本構文13個を共有する

目次1. Tsとは何か2. 基本的な文法1. プリミティブデータ型を宣言する2. オブジェクト型を宣...

HTML でのアンカータグの使用例の共有

アンカータグの使用法:同じドキュメント内の特定の場所にリンクすることをアンカー リンクと呼びます。ア...

ウェブページ作成に役立つコード

<br />ホームページの右側にあるスクロールバーを削除するにはどうすればよいですか? ...

ElementUI の el-dropdown に複数のパラメータを実装する方法

最近、業務上のボタンの増加により、ページレイアウトにボタンが多すぎて、ページが美しくなく、ユーザーエ...

レム適応の一般的なパッケージ3つについて

序文以前、rem適応についての記事を書きましたが、具体的なパッケージは紹介しませんでした。今日は、よ...

Linuxドライバのプラットフォームバスの詳細説明

目次1. プラットフォームバスの紹介1.1. Linuxドライバの分離と階層化1.1.1. Linu...

XHTML の一般的な構造タグ

構造本文、見出し、HTML、タイトル文章abbr、頭字語、アドレス、引用ブロック、br、引用、コード...

DockerコンテナでLNMPをコンパイルする例

目次1. プロジェクトの説明2. Nginxイメージの作成3. MySQLイメージの作成4. PHP...

React 構成 px 変換 rem メソッド

関連する依存関係をインストールするnpm i lib-flexible --save npm i p...

MySQLプリコンパイル機能の詳細な説明

この記事では、MySQLのプリコンパイル機能について紹介します。具体的な内容は以下のとおりです。 1...