Hubilder的那些坑---下拉/上拉刷新

默认分类  ·  2025-03-28

Hubilder的那些坑
第一坑:下拉/上拉 刷新
今天更新了huilder版本,捡到等新内容里面新增新建html,单webview下拉刷新示例

因为我之前的项目中也用到了 上拉/下拉刷新,出了一个bug,就是在android上一点问题都没有,但在ios上却始终不显示数据,

所以就想着试试这个版本,

于是我就用hbuilder新建了一个下拉刷新的模版,如下;

<!DOCTYPE html>

<head>
    <meta charset="utf-8">
    <title>Hello MUI</title>
    <meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">

    <link rel="stylesheet" href="css/mui.min.css">
    <style type="text/css">
        .mui-content>.mui-table-view:first-child {
            margin-top: -1px;
        }
    </style>
</head>

<body>
    <header class="mui-bar mui-bar-nav">
        <h1 id="title" class="mui-title">下拉刷新和上来加载 单webview模式</h1>
    </header>
    <!--下拉刷新容器-->
    <div id="pullrefresh" class="mui-content">
        <!--数据列表-->
        <ul class="mui-table-view mui-table-view-chevron"></ul>
    </div>
    <script src="js/mui.min.js" type="text/javascript" charset="utf-8"></script>
    <script>
        mui.init({
            pullRefresh: {
                container: '#pullrefresh',
                down: {
                    style:'circle',
                    callback: pulldownRefresh
                },
                up: {
                    auto:true,
                    contentrefresh: '正在加载...',
                    callback: pullupRefresh
                }
            }
        });

        var count = 0;
        function pullupRefresh() {
            setTimeout(function() {
                mui('#pullrefresh').pullRefresh().endPullup((++count > 2)); //参数为true代表没有更多数据了。
                var table = document.body.querySelector('.mui-table-view');
                var cells = document.body.querySelectorAll('.mui-table-view-cell');
                var newCount = cells.length>0?5:20;//首次加载20条,满屏
                for (var i = cells.length, len = i + newCount; i < len; i++) {
                    var li = document.createElement('li');
                    li.className = 'mui-table-view-cell';
                    li.innerHTML = '<a class="mui-navigate-right">Item ' + (i + 1) + '</a>';
                    table.appendChild(li);
                }
            }, 1500);
        }

        function addData() {
            var table = document.body.querySelector('.mui-table-view');
            var cells = document.body.querySelectorAll('.mui-table-view-cell');
            for(var i = cells.length, len = i + 5; i < len; i++) {
                var li = document.createElement('li');
                li.className = 'mui-table-view-cell';
                li.innerHTML = '<a class="mui-navigate-right">Item ' + (i + 1) + '</a>';
                //下拉刷新,新纪录插到最前面;
                table.insertBefore(li, table.firstChild);
            }
        }
        /**
         * 下拉刷新具体业务实现
         */
        function pulldownRefresh() {
            setTimeout(function() {
                addData();
                mui('#pullrefresh').pullRefresh().endPulldown();
                mui.toast("为你推荐了5篇文章");
            }, 1500);
        }

    </script>
</body>

运行测试,完美,毫无问题!

但是当我把这个页面原封不懂拷到我之前的项目时,死活报错:

mui('#pullrefresh').pullRefresh().endPullup((++count > 2)); //参数为true代表没有更多数据了。
1
就是这句代码,搞得我很崩溃,

后来终于发现:原来是 新建的html会自动生成js css两个文件,里面包含了mui.js和,mui.css.

而我的之前的项目由于是更新之前的时候新建项目产生的 js和css两个文件,所以说:

升级前后两个版本的 js ,css文件页升级了,只是我没更新我项目的 js和css文件,所以才出现这种bug,

想想之前,ios版本的下拉刷新出现的bug也不难理解了.

解决办法: 把新版本产生的js,css文件覆盖掉旧版本的即可.

…….过分!!!

 
评论
z的记录. All Rights Reserved. Theme Jasmine by Kent Liao.