ホームページ ウェブフロントエンド jsチュートリアル vue2.0 モバイル端末は、プルダウン リフレッシュおよびプルアップ ロード機能を実装します。

vue2.0 モバイル端末は、プルダウン リフレッシュおよびプルアップ ロード機能を実装します。

Apr 27, 2018 am 11:01 AM
落ちる リフレッシュする

今回は、vue2.0モバイル端末でのプルダウンリフレッシュ機能とプルアップロード機能について、vue2でプルダウンリフレッシュ機能とプルアップロード機能を実装する際の注意事項についてお届けします。 .0 モバイル端末 以下は実際のケースです。

理解できない場合は、コードを何度か読んでください。以下にその使用方法を説明します。

<template lang="html">
 <p class="yo-scroll"
 :class="{&#39;down&#39;:(state===0),&#39;up&#39;:(state==1),refresh:(state===2),touch:touching}"
 @touchstart="touchStart($event)"
 @touchmove="touchMove($event)"
 @touchend="touchEnd($event)"
 @scroll="(onInfinite || infiniteLoading) ? onScroll($event) : undefined">
  <section class="inner" :style="{ transform: &#39;translate3d(0, &#39; + top + &#39;px, 0)&#39; }">
   <header class="pull-refresh">
    <slot name="pull-refresh">
      <span class="down-tip">下拉更新</span>
      <span class="up-tip">松开更新</span>
      <span class="refresh-tip">更新中</span>
    </slot>
   </header>
   <slot></slot>
   <footer class="load-more">
    <slot name="load-more">
     <span>加载中……</span>
    </slot>
   </footer>
  </section>
 </p>
</template>
<script>
export default {
 props: {
  offset: {
   type: Number,
   default: 40
  },
  enableInfinite: {
   type: Boolean,
   default: true
  },
  enableRefresh: {
   type: Boolean,
   default: true
  },
  onRefresh: {
   type: Function,
   default: undefined,
   required: false
  },
  onInfinite: {
   type: Function,
   default: undefined,
   require: false
  }
 },
 data() {
  return {
   top: 0,
   state: 0,
   startY: 0,
   touching: false,
   infiniteLoading: false
  }
 },
 methods: {
  touchStart(e) {
   this.startY = e.targetTouches[0].pageY
   this.startScroll = this.$el.scrollTop || 0
   this.touching = true
  },
  touchMove(e) {
   if (!this.enableRefresh || this.$el.scrollTop > 0 || !this.touching) {
    return
   }
   let diff = e.targetTouches[0].pageY - this.startY - this.startScroll
   if (diff > 0) e.preventDefault()
   this.top = Math.pow(diff, 0.8) + (this.state === 2 ? this.offset : 0)
   if (this.state === 2) { // in refreshing
    return
   }
   if (this.top >= this.offset) {
    this.state = 1
   } else {
    this.state = 0
   }
  },
  touchEnd(e) {
   if (!this.enableRefresh) return
   this.touching = false
   if (this.state === 2) { // in refreshing
    this.state = 2
    this.top = this.offset
    return
   }
   if (this.top >= this.offset) { // do refresh
    this.refresh()
   } else { // cancel refresh
    this.state = 0
    this.top = 0
   }
  },
  refresh() {
   this.state = 2
   this.top = this.offset
   this.onRefresh(this.refreshDone)
  },
  refreshDone() {
   this.state = 0
   this.top = 0
  },
  infinite() {
   this.infiniteLoading = true
   this.onInfinite(this.infiniteDone)
  },
  infiniteDone() {
   this.infiniteLoading = false
  },
  onScroll(e) {
   if (!this.enableInfinite || this.infiniteLoading) {
    return
   }
   let outerHeight = this.$el.clientHeight
   let innerHeight = this.$el.querySelector('.inner').clientHeight
   let scrollTop = this.$el.scrollTop
   let ptrHeight = this.onRefresh ? this.$el.querySelector('.pull-refresh').clientHeight : 0
   let infiniteHeight = this.$el.querySelector('.load-more').clientHeight
   let bottom = innerHeight - outerHeight - scrollTop - ptrHeight
   if (bottom < infiniteHeight) this.infinite()
  }
 }
}
</script>
<style>
.yo-scroll {
 position: absolute;
 top: 2.5rem;
 right: 0;
 bottom: 0;
 left: 0;
 overflow: auto;
 -webkit-overflow-scrolling: touch;
 background-color: #ddd
}
.yo-scroll .inner {
 position: absolute;
 top: -2rem;
 width: 100%;
 transition-duration: 300ms;
}
.yo-scroll .pull-refresh {
 position: relative;
 left: 0;
 top: 0;
 width: 100%;
 height: 2rem;
 display: flex;
 align-items: center;
 justify-content: center;
}
.yo-scroll.touch .inner {
 transition-duration: 0ms;
}
.yo-scroll.down .down-tip {
 display: block;
}
.yo-scroll.up .up-tip {
 display: block;
}
.yo-scroll.refresh .refresh-tip {
 display: block;
}
.yo-scroll .down-tip,
.yo-scroll .refresh-tip,
.yo-scroll .up-tip {
 display: none;
}
.yo-scroll .load-more {
 height: 3rem;
 display: flex;
 align-items: center;
 justify-content: center;
} 
</style>
ログイン後にコピー

上記のコンポーネントをコピーし、サフィックス .vue を付けてコンポーネントとして保存し、コンポーネントの下に配置して、ページにインポートします。引用したデモ

のコードは次のとおりです。ご質問がございましたら、メッセージを残してください。

<template>
 <p>
    <v-scroll :on-refresh="onRefresh" :on-infinite="onInfinite">
    <ul>
     <li v-for="(item,index) in listdata" >{{item.name}}</li>
     <li v-for="(item,index) in downdata" >{{item.name}}</li>
    </ul>
  </v-scroll>
 </p>
</template>
<script>
import Scroll from './y-scroll/scroll';
export default{
 data () {
  return {
   counter : 1, //默认已经显示出15条数据 count等于一是让从16条开始加载
   num : 15, // 一次显示多少条
   pageStart : 0, // 开始页数
   pageEnd : 0, // 结束页数
   listdata: [], // 下拉更新数据存放数组
   downdata: [] // 上拉更多的数据存放数组
  }
 },
 mounted : function(){
   this.getList();
 },
 methods: {
  getList(){
    let vm = this;
     vm.$http.get('https://api.github.com/repos/typecho-fans/plugins/contents/').then((response) => {
          vm.listdata = response.data.slice(0,15);
         }, (response) => {
          console.log('error');
        });
  },
  onRefresh(done) {
       this.getList();
    
       done() // call done
   
  },
  onInfinite(done) {
       let vm = this;
       vm.$http.get('https://api.github.com/repos/typecho-fans/plugins/contents/').then((response) => {
         vm.counter++;
         vm.pageEnd = vm.num * vm.counter;
         vm.pageStart = vm.pageEnd - vm.num;
         let arr = response.data;
           let i = vm.pageStart;
           let end = vm.pageEnd;
           for(; i<end; i++){
            let obj ={};
            obj["name"] = arr[i].name;
            vm.downdata.push(obj);
             if((i + 1) >= response.data.length){
             this.$el.querySelector('.load-more').style.display = 'none';
             return;
            }
            }
         done() // call done
          }, (response) => {
          console.log('error');
        });
      }
 },
 components : {
'v-scroll': Scroll
 }
}
</script>
ログイン後にコピー

この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。

推奨書籍:

Vueのフロントエンド開発で注意すべきこと

vue.js ログイン制御機能の作成方法

以上がvue2.0 モバイル端末は、プルダウン リフレッシュおよびプルアップ ロード機能を実装します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

iPhone で Web ページを更新する 6 つの方法 iPhone で Web ページを更新する 6 つの方法 Feb 05, 2024 pm 02:00 PM

iPhone で Web を閲覧すると、ブラウザ アプリが開いている限り、読み込まれたコンテンツが一時的に保存されます。ただし、Web サイトはコンテンツを定期的に更新するため、古いデータを消去して最新の公開コンテンツを確認するには、ページを更新することが効果的な方法です。こうすることで、常に最新の情報と経験を得ることができます。 iPhone でページを更新したい場合は、次の投稿ですべての方法を説明します。 SafariでWebページを更新する方法【4つの方法】 iPhoneのSafariアプリで閲覧中のページを更新する方法はいくつかあります。方法 1: [更新] ボタンを使用する Safari で開いているページを更新する最も簡単な方法は、ブラウザのタブ バーにある [更新] オプションを使用することです。サファなら

Windows 11 で F5 更新キーが機能しない Windows 11 で F5 更新キーが機能しない Mar 14, 2024 pm 01:01 PM

Windows 11/10 PC では F5 キーが正しく機能しませんか? F5 キーは通常、デスクトップまたはエクスプローラーを更新したり、Web ページをリロードしたりするために使用されます。ただし、読者の中には、F5 キーがコンピュータを更新していて、正しく動作しないと報告している人もいます。 Windows 11 で F5 更新を有効にする方法は? Windows PC を更新するには、F5 キーを押すだけです。一部のラップトップまたはデスクトップでは、更新操作を完了するために Fn+F5 キーの組み合わせを押す必要がある場合があります。 F5 キーを押して更新しても機能しないのはなぜですか? F5 キーを押してもコンピューターを更新できない場合、または Windows 11/10 で問題が発生している場合は、ファンクション キーがロックされていることが原因である可能性があります。その他の考えられる原因には、キーボードまたは F5 キーが含まれます

Web ページをすばやく更新するにはどうすればよいですか? Web ページをすばやく更新するにはどうすればよいですか? Feb 18, 2024 pm 01:14 PM

ネットワークを日常的に使用する中でページの更新は頻繁に行われますが、Web ページにアクセスすると、Web ページが読み込まれない、表示が異常になるなどの問題が発生することがあります。現時点では、通常、問題を解決するためにページを更新することを選択しますが、ページを素早く更新するにはどうすればよいでしょうか?ページ更新のショートカット キーについて説明します。ページ更新ショートカットキーは、キーボード操作で現在のWebページを素早く更新する方法です。オペレーティング システムやブラウザが異なると、ページを更新するためのショートカット キーが異なる場合があります。以下では一般的な W を使用します。

反応ページが更新された後に値が消えた場合はどうすればよいですか? 反応ページが更新された後に値が消えた場合はどうすればよいですか? Dec 29, 2022 am 11:11 AM

反応ページが更新された後に値が消える問題の解決策: 1. ページを更新し、状態内のデータがクリアされるかどうかを確認します。 2. 「const name = location.query.name; const id = location.query」を使用します。 .id;」メソッド ジャンプリンクにパラメータを追加することで、データを失うことなくパラメータを渡してページを更新できます。

キーボードの更新ショートカットキーとは何ですか? キーボードの更新ショートカットキーとは何ですか? Feb 25, 2024 pm 10:38 PM

キーボード更新ショートカット キーとは何ですか? コンピューター技術の発展に伴い、キーボードは私たちの日常の仕事や生活に欠かせないデバイスになりました。キーボードの機能は文字を入力するだけでなく、コンピュータのさまざまな機能を操作したり、作業効率を向上させるためによく使用されます。キーボード ショートカットを使用すると、さまざまな操作をより迅速かつ便利に完了できます。コンピューターを日常的に使用していると、ページを更新する必要がある状況によく遭遇します。 Webページを開いたり、ソフトウェアを実行したりすると、ページがフリーズしたり、読み込めなくなったりすることがありますが、その場合はページを更新してください。

ルーティングを使用して Vue プロジェクトでページの更新とキャッシュ制御を実装するにはどうすればよいですか? ルーティングを使用して Vue プロジェクトでページの更新とキャッシュ制御を実装するにはどうすればよいですか? Jul 22, 2023 am 11:13 AM

ルーティングを使用して Vue プロジェクトでページの更新とキャッシュ制御を実装するにはどうすればよいですか? Vue プロジェクト開発では、ルーティングを使用してページの更新とキャッシュ制御を実装することが非常に一般的な要件です。この記事では、ルーティングを使用して Vue プロジェクトでページ更新とキャッシュ制御を実装する方法を紹介し、対応するコード例を示します。ルーティング設定 まず、Vue プロジェクトでルーティング設定に vue-router を使用する必要があります。 vue-router は npm を通じてインストールでき、main.js に導入して設定できます。輸入する

win11で右クリックで更新する方法 win11で右クリックで更新する方法 Dec 28, 2023 pm 02:29 PM

更新は、コンピューターを使用するときによく実行される操作です。更新すると、インターフェイス、表示、アイコン、その他のプロパティの設定がすぐに表示されます。しかし、多くの友人は、win11 を使用している場合、右クリック メニューに更新がないことに気づきます。実際、これは、win11 メニューが追加されており、更新する前にメニューを入力する必要があるためです。 win11 での右クリック更新方法 1. win11 システムでは、右クリック メニューが変更され、空白スペースを右クリックしても更新を見つけることができなくなります。 2. 代わりに、右クリック メニューの下部にある "showmoreoptions" を見つける必要があります。 3. "showmoreoptions" を入力すると、[更新] が表示されます。 4. さらに、実際には右クリックを使用して更新する必要はありません。

Win10 デスクトップを起動すると無限に更新される場合はどうすればよいですか? Win10 起動デスクトップの無限更新の解決策 Win10 デスクトップを起動すると無限に更新される場合はどうすればよいですか? Win10 起動デスクトップの無限更新の解決策 Jul 08, 2023 am 09:33 AM

最近、一部のユーザーが Win10 システムを使用しているときに、デスクトップが停止せずに自動的に更新されたり、ビデオを見たり音楽を聴いたりしているときにも更新され、ユーザー エクスペリエンスに大きな影響を与えることが判明しました。コンピューターの電源がオンになり、ワイヤレス ネットワークが更新されるとき? 以下のエディターは、Win10 デスクトップの電源がオンになったときに無限に更新される場合に対処する方法を示します。コンピューターの電源がオンになり、ワイヤレス ネットワークが更新された場合はどうすればよいですか? 1. デスクトップに入ったら、メニューバーのアイコンをマウスでクリックします。 2. 開いたインターフェースで[リソースマネージャー]を選択します。 3. ページに入ったら、[Windows タスク マネージャー] をクリックし、[タスクの終了] を選択します。 4. 続行後、デスクトップに戻り、マウスを右クリックしてメニュー バーを選択します。 5.この時、全員が【幸運】をクリック

See all articles