• vue-better-scroll实现移动端下拉加载组件


    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>                                       
  • 相关阅读:
    nginx反向代理、让代理节点记录客户端真实IP
    Nginx反向代理多虚拟主机代理
    Nginx负载均衡
    Python装饰器笔记
    Python多线程学习笔记
    Python+Bottle+Sina SAE快速构建网站
    Python中使用ElementTree解析xml
    [转]浅谈Python web框架
    Python数据库连接池实例——PooledDB
    了解HTML的代码注释
  • 原文地址:https://www.cnblogs.com/Ananiah/p/11533629.html
Copyright © 2020-2023  润新知