zoukankan      html  css  js  c++  java
  • mui 上拉加载更多的使用

    最近工作之余在用mui的框架开发,对mui了解了一些。在真正的app开发项目中,mui上拉加载模块中有两个坑,现在说一下。

    1、在函数自己上拉加载行为后的回调函数

    该函数是必须要写的,用来写自己的逻辑需求,但是一般情况下,需要设置显示为“加载更多”还是“没有更多数据了”。

    看了一些博客和官方文档,基本上都把这个设置放在了定时器中

    在定时器中调用获取数据的方法(自己的业务需求)

    2、在mui封装的上拉加载中,点击某一项会失效。这个是真的很坑。不过网上也有解决方法。就是采用事件监听的方式,阻止默认行为

    mui('选择器').on('tap','选择器',function(e){
         e.preventDefault();
        //自己的业务逻辑
    })

    一开始我将上述代码放在了mui.plusready()函数里面,可是事件并没有触发,所以,当我将它mui.plusready()中拿出来,事件就起作用了,我并不知道这是为什么,如果你偶尔看到这篇文章,可以告诉我一下。

    我将这个使用demo放在了自己的gitHub上,网址:https://github.com/dreamITGirl/projectStudy/blob/master/html/mui%E4%B8%8A%E6%8B%89%E5%8A%A0%E8%BD%BD.html

    在博客中也贴一下代码

    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0"/>
        <script>
            window.onload = function () {
                /*750代表设计师给的设计稿的宽度,你的设计稿是多少,就写多少;100代表换算比例,这里写100是
                 为了以后好算,比如,你测量的一个宽度是100px,就可以写为1rem,以及1px=0.01rem等等*/
                getRem(750, 100)
            };
            window.onresize = function () {
                getRem(750, 100)
            };
            function getRem(pwidth, prem) {
                var html = document.getElementsByTagName("html")[0];
                var oWidth = document.body.clientWidth || document.documentElement.clientWidth;
                html.style.fontSize = oWidth / pwidth * prem + "px";
            }
        </script>
        <link rel="stylesheet" href="../css/mui.min.css"/>
        <link rel="stylesheet" href="../css/reset.css"/>
        <title>关于mui的上拉加载</title>
        <style>
            .mui-content {
                background: #fff;
            }
    
            h2 {
                font-size: 0.28rem;
                line-height: .6rem;
                padding-left: 10px;
            }
    
            .mui-scroll-wrapper {
                top: .75rem;
            }
        </style>
    </head>
    <body>
    <div class="mui-content">
        <h2>上拉加载</h2>
    
        <div class="mui-scroll-wrapper" id="pullRefresh">
            <div class="mui-scroll">
                <ul class="mui-table-view" id="listContainer">
                    <li class="mui-table-view-cell">
                        list1
                    </li>
                    <li class="mui-table-view-cell">
                        list2
                    </li>
                    <li class="mui-table-view-cell">
                        list3
                    </li>
                    <li class="mui-table-view-cell">
                        list4
                    </li>
                </ul>
            </div>
        </div>
    </div>
    
    <script src="../js/jquery-2.1.3.min.js"></script>
    <script src="../js/mui.min.js"></script>
    
    <script>
        (function ($, doc) {
            var listContainer = doc.getElementById('listContainer');
            mui.init({
                pullRefresh: {
                    container: '#pullRefresh',//待刷新区域标识,querySelector能定位的css选择器均可,比如:id、.class等
                    up: {
                        height: 50,//可选.默认50.触发上拉加载拖动距离
                        auto: true,//可选,默认false.自动上拉加载一次
                        contentrefresh: "正在加载...",//可选,正在加载状态时,上拉加载控件上显示的标题内容
                        contentnomore: '没有更多数据了',//可选,请求完毕若没有更多数据时显示的提醒内容;
                        callback: pullfreshFunc //必选,刷新函数,根据具体业务来编写,比如通过ajax从服务器获取新数据;
                    }
                }
            });
            var flag = true, counter = 1, pageSize = 10;
    
            function pullfreshFunc() {
                setTimeout(function () {
                    mui('#pullRefresh').pullRefresh().endPullupToRefresh(flag);//参数为true代表没有更多数据了。
                    getData();
                }, 500);
    
            }
    
            function getData() {
                mui.ajax({
                    type: 'get',
                    url: '../json/data.json',
                    data: {'counter': counter},
                    success: function (response) {
                        console.log(response);
                        let list = response.peopleList;
    
                        let html = "";
                        flag = !(list[0] == null || list[0] == "" || !list[0]);
    
                        if (flag) {
                            counter++;
                        }
                        for (let i = 0; i < list.length; i++) {
                            html += '<li class="mui-table-view-cell">' + list[i].name + '</li>';
                        }
                        jQuery('#listContainer').append(html)
    
                    },
                    error: function (error) {
                        console.log(error)
                    }
                })
            }
    
            //点击单项事件
    //        mui中上拉加载中的坑1:点击事件失效(不需要放在mui.plusReady()中)
            mui('#pullRefresh').on('tap', 'li.mui-table-view-cell', function (e) {
                e.preventDefault();
                console.log('触发点击事件了')
            })
        }(mui, document))
    </script>
    </body>
    </html>
  • 相关阅读:
    一次排查线上接口偶发异常耗时引起的思考!
    台阶很高,青蛙跳不跳?
    从零开始认识堆排序
    Redis SDS 深入一点,看到更多!
    偏见是怎么产生的?
    TCP 粘包拆包
    Netty中的这些知识点,你需要知道!
    心有 netty 一点通!
    服务化最佳实践
    职场的“诱惑”?
  • 原文地址:https://www.cnblogs.com/bllx/p/9547684.html
Copyright © 2011-2022 走看看