1.下載安裝better-scroll
npm i -S better-scroll
1.1安裝完成之后,打開pacaage.json文件查看,是否有(better-scroll)
"dependencies": { "axios": "^0.19.0", //已安裝better-scroll "better-scroll": "^1.15.2", "core-js": "^2.6.5", "vue": "^2.6.10", "vue-router": "^3.0.3", "vuex": "^3.0.1" },
2.在components下創建組件Scrooller
<template> <div class="wrapper" ref="wrapper"> <!-- 內容分發 --> <slot></slot> </div> </template> <script> import BScroll from 'better-scroll'; export default { name: 'Scroller', // 父子通信 props : { handleToScroll : { type : Function, // 默認一個空的方法 防止報錯 default : function(){}, }, handleToTouchEnd : { type:Function, default: function(){} } }, mounted(){ //接收兩個參數 1.找到最外層包裹的容器 dom元素 2.配置元素 true 開啟配置 var scroll = new BScroll( this.$refs.wrapper,{ tap:true, probeTybe: 1 }); scroll.on('scroll',(pos) => { this.handleToScroll(pos); }); scroll.on('touchEnd',(pos) => { this.handleToTouchEnd(pos); }) } } </script> <style scoped> .wrapper{ height: 100%; } </style>
2.1在main.js中全局注冊Scroller
// scroller全局組件 import Scroller from '@/components/Scroller/Scroller.vue' Vue.component('Scroller',Scroller);
3.在views中引入Scroller組件
<template> <div class="movie_body" ref="movie_body"> <!-- 父子間傳遞方法 --> <Scroller :handleToScroll="handleToScroll" :handleToTouchEnd="handleToTouchEnd"> <ul> <li class="pulldown">內容</li> </ul> </Scroller> </div> </template> <script> // import BScroll from 'better-scroll'; export default { name: 'name', data(){ return { movieList : [], //加載狀態 pullDownMsg : '' } }, mounted(){ this.axios.get('接口').then((res) => { //處理數據並賦值給movieList }) }, methods:{ //調用組件中的方法 handleToScroll(pos){ //y軸下拉高度大於30時,改變pullDownMsg if( pos.y > 30){ this.pullDownMsg = '正在加載...' } }, //調用組件中的方法 handleToTouchEnd(pos){ if(pos.y > 30){ // 發起ajax this.axios.get(’接口').then((res) => { var msg = res.data.msg; if(msg === 'ok'){ this.pullDownMsg = '加載完成!'; //延遲一秒 setTimeout(() =>{ this.movieList = res.data.list; this.pullDownMsg = '' },1000) } }) } } } } </script>