vue-infinite-loading2.0 の使用手順
今回は vue-infinite-loading2.0 の使用方法について説明します。vue-infinite-loading2.0 を使用する際の 注意事項 は何ですか?実際の事例を見てみましょう。
はじめに
これは、Vue.js で使用される無限スクロール プラグインで、無限スクロール リストをすばやく作成するのに役立ちます。特徴
- モバイルフレンドリーなサポート
- あらゆるスクロール可能な要素と互換性があります
- ロードアニメーションとして使用できるさまざまなスピナーがあります
- ロード後の結果の表示をサポートします
- サポート両方向の無限ロード
インストール
注: vue-infinite-loading2.0 は、使用されている Vue.js2 でのみ使用できます。 .0で。 Vue.js1.0で使用したい場合はvue-infinite-loading1.3版をインストールしてくださいnpm install vue-infinite-loading --save
インポート方法
es6モジュールインポート方法
import InfiniteLoading from 'vue-infinite-loading'; export default { components: { InfiniteLoading, }, };
const InfiniteLoading = require('vue-infinite-loading'); export default { components: { InfiniteLoading, }, };
その他の方法
<script src="/path/to/vue-infinite-loading/dist/vue-infinite-loading.js"></script>
... components: { VueInfiniteLoading:VueInfiniteLoading.default, } ...
Start
基本的な使用法
この例では、基本的な無限リストには次の 3 つの手順があります:- テンプレートで v-for を使用してリストを作成します
- InfiniteLoading コンポーネントをリストの一番下に配置します
- InfiniteLoading を配置します。コンポーネント ref 属性はイベントのトリガーに使用されるため、infiniteLoading に設定されます。
- 読み込み
テンプレート
<template> <p> <p v-for="item in list"> Line: <span v-text="item"></span> </p> <infinite-loading :on-infinite="onInfinite" ref="infiniteLoading"> </infinite-loading> </p> </template>
スクリプト
import InfiniteLoading from 'vue-infinite-loading'; export default { data() { return { list: [] }; }, methods: { onInfinite() { setTimeout(() => { const temp = []; for (let i = this.list.length + 1; i <= this.list.length + 20; i++) { temp.push(i); } this.list = this.list.concat(temp); this.$refs.infiniteLoading.$emit('$InfiniteLoading:loaded'); }, 1000); } }, components: { InfiniteLoading } };
例: ハッカー ニュース リスト ページ
この例では、ハッカー ニュース リスト ページを模倣しますが、InfiniteLoading を使用します。 replaceページネーションこの例を開始する前に、以下を準備する必要があります:- ニュースリストを取得するための API、この例では HN Search API を使用します
- axios プラグインをインポートするrequest data
Template
<p class="hacker-news-list"> <p class="hacker-news-header"> <a target="_blank" href="http://www.ycombinator.com/" rel="external nofollow" rel="external nofollow" >  </a> <span>Hacker News</span> </p> <p class="hacker-news-item" v-for="(item, key) in list"> <span class="num" v-text="key + 1"></span> <p> <a target="_blank" :href="item.url" rel="external nofollow" rel="external nofollow" v-text="item.title"></a> </p> <p> <small> <span v-text="item.points"></span> points by <a target="_blank" :href="'https://news.ycombinator.com/user?id=' + item.author" rel="external nofollow" rel="external nofollow" v-text="item.author"></a> | <a target="_blank" :href="'https://news.ycombinator.com/item?id=' + item.objectID" rel="external nofollow" rel="external nofollow" v-text="item.num_comments + ' comments'"></a> </small> </p> </p> <infinite-loading :on-infinite="onInfinite" ref="infiniteLoading"> <span slot="no-more"> There is no more Hacker News :( </span> </infinite-loading> </p>
Script
import InfiniteLoading from 'vue-infinite-loading'; import axios from 'axios'; const api = 'http://hn.algolia.com/api/v1/search_by_date?tags=story'; export default { data() { return { list: [] }; }, methods: { onInfinite() { axios.get(api, { params: { page: this.list.length / 20 + 1 } }).then((res) => { if (res.data.hits.length) { this.list = this.list.concat(res.data.hits); this.$refs.infiniteLoading.$emit('$InfiniteLoading:loaded'); if (this.list.length / 20 === 3) { this.$refs.infiniteLoading.$emit('$InfiniteLoading:complete'); } } else { this.$refs.infiniteLoading.$emit('$InfiniteLoading:complete'); } }); } }, components: { InfiniteLoading } }; <strong>onInfinite</strong> 関数では、ニュースのページをリクエストし、毎回リスト配列にプッシュします。 3 ページのニュースをリクエストすると、<strong>$InfiniteLoading:complete</strong> イベントがトリガーされ、ロードするデータがもうないことが <strong>InfiniteLoading</strong> コンポーネントに通知されます。これ以上データがないことを示すために、テンプレートでカスタマイズしたプロンプトの内容が表示されます。 <p style="text-align: left;"></p> <p style="text-align: left;">スタイル<strong></strong></p> <pre class="brush:php;toolbar:false">.hacker-news-list .hacker-news-item { margin: 10px 0; padding: 0 10px 0 32px; line-height: 16px; font-size: 14px; } .hacker-news-list .hacker-news-item .num { margin-top: 1px; margin-left: -32px; float: left; width: 32px; color: #888; text-align: right; } .hacker-news-list .hacker-news-item p { padding-left: 8px; margin: 0; } .hacker-news-list .hacker-news-item .num:after { content: "."; } .hacker-news-list .hacker-news-item p>a { color: #333; padding-right: 5px; } .hacker-news-list .hacker-news-item p a { text-decoration: none; } .hacker-news-list .hacker-news-item p small, .hacker-news-list .hacker-news-item p small a { color: #888; }
フィルターで使用
在上个例子的基础上,我们将在头部创建一个下拉选择作为过滤器,当我们改变过滤器,列表将会重新加载。
Template
<p class="hacker-news-list"> <p class="hacker-news-header"> <a target="_blank" href="http://www.ycombinator.com/" rel="external nofollow" rel="external nofollow" >  </a> <span>Hacker News</span> <select v-model="tag" @change="changeFilter()"> <option value="story">Story</option> <option value="poll">Poll</option> <option value="show_hn">Show hn</option> <option value="ask_hn">Ask hn</option> <option value="front_page">Front page</option> </select> </p> <p class="hacker-news-item" v-for="(item, key) in list"> <span class="num" v-text="key + 1"></span> <p> <a target="_blank" :href="item.url" rel="external nofollow" rel="external nofollow" v-text="item.title"></a> </p> <p> <small> <span v-text="item.points"></span> points by <a target="_blank" :href="'https://news.ycombinator.com/user?id=' + item.author" rel="external nofollow" rel="external nofollow" v-text="item.author"></a> | <a target="_blank" :href="'https://news.ycombinator.com/item?id=' + item.objectID" rel="external nofollow" rel="external nofollow" v-text="item.num_comments + ' comments'"></a> </small> </p> </p> <infinite-loading :on-infinite="onInfinite" ref="infiniteLoading"> <span slot="no-more"> There is no more Hacker News :( </span> </infinite-loading> </p>
Script
import InfiniteLoading from 'vue-infinite-loading'; import axios from 'axios'; const api = 'http://hn.algolia.com/api/v1/search_by_date'; export default { data() { return { list: [], tag: 'story' }; }, methods: { onInfinite() { axios.get(api, { params: { tags: this.tag, page: this.list.length / 20 + 1 } }).then((res) => { if (res.data.hits.length) { this.list = this.list.concat(res.data.hits); this.$refs.infiniteLoading.$emit('$InfiniteLoading:loaded'); if (this.list.length / 20 === 10) { this.$refs.infiniteLoading.$emit('$InfiniteLoading:complete'); } } else { this.$refs.infiniteLoading.$emit('$InfiniteLoading:complete'); } }); }, changeFilter() { this.list = []; this.$nextTick(() => { this.$refs.infiniteLoading.$emit('$InfiniteLoading:reset'); }); } }, components: { InfiniteLoading } };
在changeFilter函数中,我们清楚了列表并等待DOM更新,然后我们触发一个$InfiniteLoading:reset事件,目的是让 InfiniteLoading 组件回到最初状态,它将立刻请求新的数据。
Style
在上个例子基础上增加样式
.demo-inner { margin-left: 20px; width: 261px; height: 455px; border: 1px solid #ccc; overflow: auto; } .hacker-news-list .hacker-news-header { padding: 2px; line-height: 14px; background-color: #f60; } .hacker-news-list { min-height: 455px; background-color: #f6f6ef; } .hacker-news-list .hacker-news-header select { float: right; color: #fff; background-color: transparent; border: 1px solid #fff; outline: none; }
服务端渲染
服务端渲染(SSR)是Vue.js2.0的新特性,当你在你的SSR应用中使用这个组件,会得到类似这样的错误:
Error: window is not defined ReferenceError: window is not defined at ... at ... at e.exports (...) at Object. (...) at p (...) at Object.e.exports.render.e (...) at p (...) at Object. (...) at p (...) at e.esModule.default (...)
因为style-loader不支持在这个时候本地导出,详情点这里,所以我们需要下面的变通方案,为了你的SSR应用:
import InfiniteLoading from 'vue-infinite-loading/src/components/Infiniteloading.vue';
代替
import InfiniteLoading from 'vue-infinite-loading';
npm install less less-loader --save-dev 如果你还没有安装它们。
然后你的SSR应用应该运行良好。如果不是,你可以加入这个issue去讨论。
属性
on-infinite
这是一个回调函数,当滚动到距离滚动父元素底部特定距离的时候,会被调用。
通常,在数据加载完成后,你应该在这个函数中发送$InfiniteLoading:loaded事件。
- type Function - reuqired true
distance
这是滚动的临界值。如果到滚动父元素的底部距离小于这个值,那么on-infinite回调函数就会被调用。
- type Number - required false - default 100 - unit pixel
spinner
通过这个属性,你可以选择一个你最喜爱旋转器作为加载动画。点击这里可以看到所有可用的旋转器。
- type String - required false - default 'default'
ref
正如你所知,这个属性是一个Vue.js的官方指令,用来获取子组件的实例。我们需要用它来得到 InfiniteLoading 组件的实例来发送事件。你可以用这种方式来得到实例:this.$refs[the value of ref attribute].
- type String - required true
direction
如果你设置这个属性为top,那么这个组件将在你滚到顶部的时候,调用on-infinite函数。
警告:你必须在数据加载后,手动地将滚动父元素的scrollTop设置为正确的值,否则,该组件会一次又一次调用on-infinite函数。
- type String - default 'bottom'
事件
InfiniteLoading 组件将处理一下事件。如果你需要通过组件的实例来$emit,则可以通过ref属性来得到组件实例。
$InfiniteLoading:loaded
通常,你需要在数据加载后发送这个事件, InfiniteLoading组件将隐藏加载动画,并且准备下一次触发。
$InfiniteLoading:complete
如果InfiniteLoading组件就不会接收$InfiniteLoading:loaded,当你发送这个事件后,它将为用户显示一个没有结果的提示。如果InfiniteLoading组件接收过$InfiniteLoading:loaded,当你发送这个事件的时候,它会为用户显示一个没有更多内容的提示。你可以利用slot来自定义需要显示的内容。
你的onInfinite函数可能像这个样子:
onInfinite() { this.$http.get(url, (res) => { if (res.data) { this.list = this.list.concat(res.data); this.$refs[your ref attirbute's value].$emit('$InfiniteLoading:loaded'); } else { this.$refs[your ref attirbute's value].$emit('$InfiniteLoading:complete'); } }); }
$InfiniteLoading:reset
InfiniteLoading组件将会回到最初的状态,并且on-infinite函数将会立刻被调用。大部分情况下,如果你把这个组件同过滤器或制表符一起使用,这个事件还是有用的。
插槽
你可以利用slot自定义提示的内容,当然,如果你喜欢的话,也可以使用默认内容:
<span slot="{{ slot name }}"> {{ Your content }} </span>
no-results
当InfiniteLoading组件接收到$InfiniteLoading:complete 事件并且它没有接收过$InfiniteLoading:loaded事件时,这个内容会显示出来。
- type String - default No results :(
no-more
当InfiniteLoading组件接收到$InfiniteLoading:complete 事件并且它已经接收过$InfiniteLoading:loaded事件时,这个内容会出现。
spinner
如果,你不喜欢当前旋转器,你可以自定义自己的旋转器作为加载时的动画。
- type HTML - default default spinner
旋转器
你可以用spinner属性,选择你最喜爱的旋转器作为加载动画:
<infinite-loading spinner="{{ spinner name }}"></infinite-loading>
点击这里可以查看几个可用的旋转器。
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
Vue无限加载vue-infinite-loading使用详解
以上がvue-infinite-loading2.0 の使用手順の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









1. ノイズリダクションモードと透明モードを切り替える イヤホンのハンドルを約1秒間長押しすると、ノイズリダクションモードと透明モードが切り替わります。 2. 音楽モードで、イヤホンハンドルを 1 回押すと音楽を一時停止または再生し、イヤホンハンドルを 2 回押すと次の曲を再生し、イヤホンハンドルを 3 回押すと前の曲を再生するか音声を起動します。 3. 通話モードでは、通話中にイヤホンのハンドルを 1 回押して、通話に応答するか電話を切ります。 4. リセット方法 イヤホンボックスを開け、充電ボックスのインジケーターライトが赤に5回点滅したらボタンを放すとイヤホンがリセットされます。 3. 電話の接続方法 1. 充電ボックスを開きます。 2. 設定ボタンを 2 秒間押し続けます。 3. 電話画面にポップアップ ウィンドウが表示されたら、クリックして接続を確認します。 4. バッテリー状態の確認方法 1. イヤホンを携帯電話に接続すると、携帯電話画面のポップアップ ウィンドウでイヤホンと充電ボックスのバッテリー レベルを確認できます。 2、

UniApp の支払い機能にアクセスして使用するための手順: モバイル決済の人気に伴い、多くのアプリケーションは、ユーザーがオンライン支払いを容易にするために支払い機能を統合する必要があります。 UniAppは、Vue.jsをベースとしたクロスプラットフォーム開発フレームワークとして、ワンタイム開発とマルチプラットフォーム利用の特徴を持ち、決済機能を簡単に実装できます。この記事では、UniApp の支払い機能にアクセスする方法とコード例を紹介します。 1. 支払い機能にアクセスするには、アプリ側のmanifest.jsonファイルに支払い権限を追加します。

多言語処理に Hyperf フレームワークを使用する方法 はじめに: インターネットのグローバル化に伴い、多言語処理は多くのアプリケーションの開発に不可欠なスキルになりました。 Web アプリケーション開発では、複数の言語をサポートできることは非常に重要です。これにより、さまざまなユーザーのニーズに適切に対応できるようになります。この記事では、多言語処理に Hyperf フレームワークを使用する方法を紹介し、具体的なコード例を示します。 Hyperf フレームワークをインストールする まず、Hyperf フレームワークをインストールする必要があります。 Composer コマンドを使用すると、

uniapp のビデオ録画機能の使い方 今回は、uniapp 開発フレームワークのビデオ録画機能の使い方を紹介します。 uniapp はクロスプラットフォーム開発フレームワークで、一度書いたコードを基に複数のプラットフォームでアプリケーションを同時に実行できるため、開発者にとって非常に便利です。 uniappでは、uni-AD-INカメラコンポーネントを使用してビデオ録画機能を実装できます。まず、ユニをインストールする必要があります。

高度なフィルタリングを使用してデータをフィルタリングする方法 日常業務において、大量のデータをフィルタリングすることは非常に一般的かつ重要なタスクです。従来のフィルタリング機能では、より正確かつ複雑なデータのフィルタリングのニーズを満たすことができない可能性があります。この問題を解決するために、多くのオフィス ソフトウェアは、ユーザーがデータをより効率的にフィルタリングできる高度なフィルタリング機能を提供しています。この記事では、高度なフィルタリング機能を使用してデータをフィルタリングする方法について説明します。ステップ 1: データを準備する 高度なフィルタリング機能を使用する前に、まずフィルタリングするデータを準備する必要があります。データが完全であることを確認してください

Cookie は、Web サイト上でのユーザーの個人的な好みや行動に関する情報を保存するために使用される一般的な Web テクノロジーです。今日のデジタル時代では、ほとんどすべての Web サイトが Cookie を使用して、パーソナライゼーションと優れたユーザー エクスペリエンスを提供しています。この記事では、ユーザーがこのテクノロジーをよりよく理解し、習得できるように、Cookie の使用方法を詳しく紹介します。まず、Cookie の基本的な概念を理解しましょう。 Cookie は、Web サイトによってユーザーのブラウザに保存される小さなテキスト ファイルであり、Web サイトへのユーザーの訪問に関する情報が含まれています。

Zizai Zhaoアプリの使い方は?このソフトウェアは、ユーザーが失くしたものを素早く見つけるのに役立つだけでなく、すべてを素早く持ち出すことができる専用のスマートリマインダー機能も備えています。このような使いやすいソフトウェアを使用する必要があります。ダウンロードしたばかりのユーザーにとって、すぐに内容を取得したい場合、このソフトウェアをどのように操作すればよいでしょうか?それでは、このソフトの操作方法を見てみましょう. 迅速な商品の検索に効果的に役立つことを願っています. 自在趙アプリソフトの使い方のチュートリアル. 1. 当サイトが提供するナッツ自在趙アプリソフトをダウンロードし、ターンしますon Bluetooth、お使いの携帯電話がそれをサポートしている必要があります Bluetooth 4.0 2. ソフトウェアを開き、新しいユーザーを登録します。携帯電話で登録するか、Weibo または QQ でログインするかを選択できます。 3.意志

win7 システムは、他の Windows システムと同様に、すべての機能を使用するにはアクティブ化する必要があります。では、Win7をアクティベートするにはどうすればよいでしょうか?一般的に使用される方法は、win7 アクティベーション コードまたは win7 アクティベーション ツールを使用することですが、win7activation アクティベーション ツールの方が使いやすいです。以下のエディタではwin7activationアクティベーションツールの使い方を紹介します。具体的な方法は次のとおりです。 1. まず、「WIN7Activation」(Win7 アクティベーション ツール)をオンラインでダウンロードし、プログラムをコンピュータにコピーし、ダブルクリックして開きます。 2. 次に、「アクティブ化」を直接クリックすると、アクティブ化状態が自動的に開始されます。 3. プログラムが win7 システムをアクティブ化した後、プロンプトがポップアップ表示されます。「はい」をクリックします。 4.再起動
