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

推薦する

vue+drf+サードパーティのスライディング検証コードアクセスの実装

目次1. 背景2. 検証プロセス3. 検証を作成する4. フロントエンドコード4.1 コアjsファイ...

IDEA に基づいて Tomcat サーバーを展開するための詳細な手順

目次導入ステップ1ステップ2: アイデアで動的Webプロジェクトを作成するステップ3: Tomcat...

HTMLがHikvisionカメラのリアルタイム監視機能を実現

最近、同社は CCFA 関連のいくつかの作業を行う予定で、その 1 つはカメラのリアルタイム監視を再...

Vueは指定された日付間のカウントダウンを実装します

この記事では、指定された日付間のカウントダウンを実装するためのVueの具体的なコードを例として紹介し...

タグのターゲットリンクを iframe に向ける方法

コードをコピーコードは次のとおりです。 <iframe id="myFrameId&...

HTML+CSS をベースにした素敵なフリップログインおよび登録インターフェースを作成します

素敵なフリップログインと登録インターフェースを作成する序文最近、ネットワーク ディスクを構築しようと...

Mysqlはブール型の演算を設定します

Mysqlはブール型を設定します1. Tinyintタイプテストテーブルを作成し、blフィールドをブ...

メタビューポートタグ(モバイルブラウジングズームコントロール)の使用方法

OP が現在のファームウェアで Web ページを開くと、常に 50% にズームアウトされてから表示さ...

React ページ ターナーの実装 (フロント エンドとバックエンドを含む)

目次フロントエンド上記のアイデアに従って、ページめくり機能を設計して記述します。バックエンド(Jav...

HTMLの行間設定方法と問題点

<p></p> の行間隔を設定するには、style="line-h...

Vue プロジェクトで addRoutes を使用する際の問題の解決策

目次序文1. 404 ページ1. 原因2. 解決策2.白い画面を更新する1. 原因2. 解決策3. ...

カレンダーウィジェットのネイティブJS実装

この記事の例では、カレンダーウィジェットを実装するためのjsの具体的なコードを参考までに共有していま...

Golang を使って Docker API を実際に操作する

目次SDKのインストールローカル Docker の管理コンテナの実行バックグラウンドでコンテナを実行...

Mybatis mysqlの削除操作では、最初のデータメソッドのみを削除できます。

バグ図のように、削除文とパラメータをデータベースにコピーして実行し、2つのデータを削除しようとしたの...

HTMLのタグについての簡単な説明

0. タグとは何ですか? XML/HTML コードコンテンツをクリップボードにコピー<入力 t...