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+CSS3+JSで実装されたドロップダウンメニュー

成果を達成する html <div class="コンテナ"> &l...

LINUX でポートが占有されているかどうかを確認する方法

ポートが占有されているかどうかは、これまで一度もわかりませんでした。多くの人に尋ねて、ようやくわかり...

Vueは不規則なスクリーンショットを実装する

目次SVG による画像キャプチャCSS部分エフェクト画像表示ソースコードアドレスこれまで見てきたもの...

Docker を使用してコンテナ内のルート パスワードを変更する方法

1. dockerfileを作成するときにsshパスワードを設定するには、次のコマンドを使用します。...

MySQLカバーインデックスの利点

一般的な提案は、WHERE 条件のインデックスを作成することですが、これは実際には一方的です。インデ...

自動ロック画面機能を実現するjs

1. 使用シナリオこのような要件があるため、システムが開発されました。ユーザーがデスクトップを離れ...

仕事の効率を上げるJS略語スキル20選

目次複数の変数を同時に宣言する場合は、1 行に短縮できます。分割代入は複数の変数に同時に値を割り当て...

SQLの最適化では間違いがよく起こります。それはMySQLのExplain Planの使い方を理解していないからです。

目次1. 準備2. 説明計画の概要3. フィールドの詳細な説明4. パーティションクエリにはパーティ...

HTMLのセマンティクスといくつかの簡単な最適化についての簡単な説明

1. セマンティゼーションとは何ですか? Bing辞書の説明セマンティクス化とは、適切な HTML ...

シンプルな画像ドラッグ効果を実現する js

この記事では、簡単な画像ドラッグ効果を実現するためのjsの具体的なコードを参考までに紹介します。具体...

Linux sar コマンドの使用方法とコード例の分析

1. CPU使用率sar -p (一日中表示) sar -u 1 10 (1: 1秒ごと、10: 1...

Docker で Node プロジェクトをビルドしてデプロイする方法

目次DockerとはクライアントサイドDocker基本的なDocker操作画像名画像をプルするその他...

ボタンの 4 つのクリック応答方法の概要

ボタンは頻繁に使用されます。ここでは、イベント処理メソッドを整理し、実装方法が多数あることを発見しま...

CnBlogs カスタムブログスタイルの共有

半夜かけてようやくブログのスタイルを大体完成させることができました。ブログ全体が青を基調としていて、...

Windows で MySQL サービスを停止または削除できない問題の解決策

圧縮パッケージを解凍して Windows に MySQL をインストールしました。インストール方法は...