Rumah hujung hadapan web tutorial js vue2.0移动端做出下拉刷新与上拉加载功能

vue2.0移动端做出下拉刷新与上拉加载功能

Apr 27, 2018 am 11:01 AM
jatuh ke bawah segarkan semula

这次给大家带来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>
Salin selepas log masuk

把上面组件拷贝一下,存成后缀是.vue的组件放到你的component下,  然后引入到页面 , 下面是我引用的demo

上代码: 里面有注释哦,有问题给我留言!

<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>
Salin selepas log masuk

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

Vue在前端开发中需要注意什么

vue.js怎么做出登录控制功能

Atas ialah kandungan terperinci vue2.0移动端做出下拉刷新与上拉加载功能. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

6 Cara untuk Muat Semula Halaman Web pada iPhone 6 Cara untuk Muat Semula Halaman Web pada iPhone Feb 05, 2024 pm 02:00 PM

Apabila anda menyemak imbas web pada iPhone anda, kandungan yang dimuatkan disimpan buat sementara waktu selagi apl penyemak imbas kekal terbuka. Walau bagaimanapun, tapak web mengemas kini kandungan dengan kerap, jadi menyegarkan halaman adalah cara yang berkesan untuk mengosongkan data lama dan melihat kandungan yang diterbitkan terkini. Dengan cara ini, anda sentiasa mendapat maklumat dan pengalaman terkini. Jika anda ingin memuat semula halaman pada iPhone, siaran berikut akan menerangkan kepada anda semua kaedah. Cara Muat Semula Halaman Web pada Safari [4 Kaedah] Terdapat beberapa kaedah untuk memuat semula halaman yang anda lihat pada Apl Safari pada iPhone. Kaedah 1: Gunakan Butang Muat Semula Cara paling mudah untuk memuat semula halaman yang telah anda buka di Safari ialah menggunakan pilihan Muat Semula pada bar tab penyemak imbas anda. Jika Safa

Kunci muat semula F5 tidak berfungsi dalam Windows 11 Kunci muat semula F5 tidak berfungsi dalam Windows 11 Mar 14, 2024 pm 01:01 PM

Adakah kunci F5 tidak berfungsi dengan betul pada PC Windows 11/10 anda? Kekunci F5 biasanya digunakan untuk menyegarkan desktop atau penjelajah atau memuat semula halaman web. Walau bagaimanapun, sesetengah pembaca kami telah melaporkan bahawa kekunci F5 sedang menyegarkan komputer mereka dan tidak berfungsi dengan betul. Bagaimana untuk mendayakan penyegaran F5 dalam Windows 11? Untuk menyegarkan semula PC Windows anda, hanya tekan kekunci F5. Pada sesetengah komputer riba atau desktop, anda mungkin perlu menekan kombinasi kekunci Fn+F5 untuk menyelesaikan operasi muat semula. Mengapa penyegaran F5 tidak berfungsi? Jika menekan kekunci F5 gagal menyegarkan semula komputer anda atau anda mengalami masalah pada Windows 11/10, ia mungkin disebabkan oleh kekunci fungsi yang dikunci. Punca lain yang berpotensi termasuk papan kekunci atau kekunci F5

Bagaimana untuk memuat semula halaman web dengan cepat? Bagaimana untuk memuat semula halaman web dengan cepat? Feb 18, 2024 pm 01:14 PM

Penyegaran halaman adalah perkara biasa dalam penggunaan rangkaian harian kami Apabila kami melawat halaman web, kadangkala kami menghadapi beberapa masalah, seperti halaman web tidak dimuatkan atau dipaparkan secara tidak normal, dsb. Pada masa ini, kami biasanya memilih untuk memuat semula halaman untuk menyelesaikan masalah, jadi bagaimana untuk memuat semula halaman dengan cepat? Mari kita bincangkan kekunci pintasan untuk muat semula halaman. Kekunci pintasan muat semula halaman ialah kaedah untuk memuat semula halaman web semasa dengan pantas melalui operasi papan kekunci. Dalam sistem pengendalian dan penyemak imbas yang berbeza, kekunci pintasan untuk muat semula halaman mungkin berbeza. Di bawah ini kami menggunakan W biasa

Apakah yang perlu saya lakukan jika nilai itu hilang selepas halaman tindak balas dimuat semula? Apakah yang perlu saya lakukan jika nilai itu hilang selepas halaman tindak balas dimuat semula? Dec 29, 2022 am 11:11 AM

Penyelesaian kepada nilai yang hilang selepas halaman tindak balas dimuat semula: 1. Muat semula halaman dan semak sama ada data dalam keadaan akan dikosongkan; 2. Gunakan "const name = location.query.name; const id = location.query kaedah .id;" Dengan menambahkan parameter pada pautan lompat, anda boleh melepasi parameter dan memuat semula halaman tanpa kehilangan data.

Apakah kekunci pintasan muat semula papan kekunci? Apakah kekunci pintasan muat semula papan kekunci? Feb 25, 2024 pm 10:38 PM

Apakah kekunci pintasan segar semula papan kekunci Dengan perkembangan teknologi komputer, papan kekunci telah menjadi peranti yang sangat diperlukan dalam kerja dan kehidupan harian kita. Fungsi papan kekunci melampaui memasukkan teks Ia juga sering digunakan untuk mengendalikan pelbagai fungsi komputer dan meningkatkan kecekapan kerja kita. Pintasan papan kekunci membolehkan kami menyelesaikan pelbagai operasi dengan lebih cepat dan mudah. Dalam penggunaan komputer harian, kita sering menghadapi situasi di mana kita perlu memuat semula halaman. Apabila kami membuka halaman web atau menjalankan perisian, kadangkala halaman akan membeku atau gagal dimuatkan Pada masa ini, muat semula halaman.

Bagaimana untuk menggunakan penghalaan untuk melaksanakan penyegaran halaman dan kawalan cache dalam projek Vue? Bagaimana untuk menggunakan penghalaan untuk melaksanakan penyegaran halaman dan kawalan cache dalam projek Vue? Jul 22, 2023 am 11:13 AM

Bagaimana untuk menggunakan penghalaan untuk melaksanakan penyegaran halaman dan kawalan cache dalam projek Vue? Dalam pembangunan projek Vue, adalah keperluan yang sangat biasa untuk menggunakan penghalaan untuk melaksanakan penyegaran halaman dan kawalan cache. Artikel ini akan memperkenalkan cara menggunakan penghalaan dalam projek Vue untuk melaksanakan penyegaran halaman dan kawalan cache serta memberikan contoh kod yang sepadan. Konfigurasi penghalaan Pertama, anda perlu menggunakan vue-router untuk konfigurasi penghalaan dalam projek Vue. vue-router boleh dipasang melalui npm dan diperkenalkan serta dikonfigurasikan dalam main.js. impor

Cara klik kanan muat semula dalam win11 Cara klik kanan muat semula dalam win11 Dec 28, 2023 pm 02:29 PM

Penyegaran adalah operasi yang sering kami lakukan apabila menggunakan komputer Penyegaran boleh memaparkan tetapan kami dengan cepat untuk antara muka, paparan, ikon dan sifat-sifat lain, bagaimanapun, ramai rakan mendapati tiada penyegaran dalam menu klik kanan apabila menggunakan win11. ini kerana menu win11 A telah ditambah, yang perlu dimasukkan sebelum boleh dimuat semula. Cara klik kanan muat semula dalam win11 1. Dalam sistem win11, menu klik kanan telah diubah, dan kami tidak akan dapat mencari muat semula apabila kami klik kanan pada ruang kosong. 2. Sebaliknya, kita perlu mencari "showmoreoptions" di bahagian bawah menu klik kanan 3. Selepas memasukkan "showmoreoptions", anda boleh mencari muat semula. 4. Selain itu, kita sebenarnya tidak perlu menggunakan klik kanan untuk menyegarkan semula

Apakah yang perlu saya lakukan jika desktop Win10 disegarkan tanpa had apabila saya memulakannya? Penyelesaian untuk menyegarkan semula desktop permulaan Win10 tanpa had Apakah yang perlu saya lakukan jika desktop Win10 disegarkan tanpa had apabila saya memulakannya? Penyelesaian untuk menyegarkan semula desktop permulaan Win10 tanpa had Jul 08, 2023 am 09:33 AM

Baru-baru ini, apabila sesetengah pengguna menggunakan sistem Win10, mereka mendapati bahawa kadangkala desktop akan dimuat semula secara automatik tanpa berhenti, dan ia juga akan dimuat semula semasa kami menonton video dan mendengar muzik, yang sangat mempengaruhi pengalaman pengguna apabila komputer dihidupkan dan rangkaian wayarles disegarkan semula? Apakah yang perlu saya lakukan jika komputer dihidupkan dan rangkaian wayarles dimuat semula? 1. Selepas kita memasuki desktop, klik ikon bar menu dengan tetikus. 2. Pilih [Pengurus Sumber] dalam antara muka yang dibuka. 3. Selepas memasuki halaman, klik [Windows Task Manager] dan pilih [End Task]. 4. Selepas meneruskan, kembali ke desktop dan klik kanan tetikus untuk memilih bar menu. 5. Pada masa ini, semua orang mengklik [nasib]

See all articles