zoukankan      html  css  js  c++  java
  • vue 上滑加载更多

    移动端网页的上滑加载更多,其实就是滑动+分页的实现。

     

    <template>
        <div>
            <p class="footer-text">--{{footerText}}--</p>
            <p class="loading" v-show="loading"></p>
        </div>
    </template>
    <script>
        import $ from 'jquery'
        export default {
            data(){
                return{
                    serverData:[],//接受服务器的数据,
                    page:1,
                    footerText:'上滑加载更多',
                    loading:false//loading的开关
                }
            },
            created(){
                this.getServerData(this.page);
                this.listenScroll();
            },
            beforeDestroy(){
                $(window).unbind('scroll');
            },
            methods:{
                getServerData(){
                    //参数只有page,项目需要可以添加
                    //项目中的ajax方式可能跟这个不一样,没关系,思路是相同的。
                    const num = 3;//每一页接受多少条数据
                    this.$api.get('url',{page:this.page},res=>{
                        this.loading = false;
                        this.serverData = res.data;//接受数据
                        if(res.data.length<num){
                            this.footerText = "到底了";
                            $(window).unbind('scroll');
                        }
                    })
                },
                listenScroll(){
              let self = this;
                    $(window).scroll(function () {
                        let scrollTop = $(window).scrollTop();
                        let windowTop = $(window).height();
                        let documentTop = $(document).height();
                        if(documentTop - windowTop <= scrollTop){
                            self.page++;
                            self.loading = true;
                            self.getServerData();
                        }
                    });
                }
            }
        }
    </script>
    

      

      精妙的地方在 getServerData()判断什么时候后端的数据全了,判断就是当前返回的数据长度小于约定的长度,说明到底了。

     如果后端是thinkPhp,由于有page()函数,那么代码类似这样:

      

    //获取page参数
    $page = I('get.page',1);
    //前后端约定每次显示的条数
    $num = 3;
    $M
    ->where()
    -> page($page,$num)
    ->select	
    

      

  • 相关阅读:
    sql server数据库中char,varchar,nvarchar字段的区别
    在Notepad++中为Python配置编译环境
    react-navigation笔记
    React Native之语法规范
    Node.js学习笔记
    Java与C#对照笔记
    iOS常用配置注意事项
    React Native之RNRF框架源码解析
    React Native之Redux相关
    keytool常用方法
  • 原文地址:https://www.cnblogs.com/xiaochongchong/p/8662669.html
Copyright © 2011-2022 走看看