apiCloud实现加载更多效果,基本完美~

简介:

apiCloud实现加载更多效果

1.接口支持,加入参数page。

$page = $this->_request('page','trim','1');
$pagesize = 10; // 默认获取10条

2.利用limit获取数据

select * from sh_category limit 20;
select * from sh_category limit 0,10; // 第一页
select * from sh_category limit 10,10;// 第二页

程序处理

$goods = $this->where($where)->limit(($page-1)*$num,$num)->order($order)->select();

第一页,就是从0,10。第二页,就是10,10。

3.接口提示下一页是否有数据,以及当前页

$this->outData['status'] = '1';
$this->outData['msg']    = '获取成功';
$this->outData['info']['goods']   = $goods;
$this->outData['info']['page']   = $page;
$this->outData['info']['category_id']  = $category_id;
if (count($next_page_goods) > 0) {
   $this->outData['info']['next'] = '1'; // 还有数据
} else {
   $this->outData['info']['next'] = '0'; // 已经没有数据
}

4.前端通过doT处理

<div id="info_area"></div>
<script id="info_tmpl" type="text/x-dot-template">
{{? typeof it.goods != 'undefined'}}
    <div id="goods_data" class="aui-content">
        <ul class="aui-list aui-media-list">
            {{~ it.goods:gval:gkey}}
            <li class="aui-list-item" onclick="openGoodsDetail('{{= gval.name}}','{{= gval.id}}')">
                <div class="aui-media-list-item-inner">
                    <div class="aui-list-item-media">
                        <img src="{{= gval.logoimg}}">
                    </div>
                    <div class="aui-list-item-inner">
                        <div class="aui-list-item-text">
                            <div class="aui-list-item-title">
                                {{= gval.name}}
                            </div>
                        </div>
                        <div class="red">¥{{= gval.price}}</div>
                        <div class="aui-list-item-text">
                            <div class="aui-list-item-title" style="text-decoration:line-through;">{{= gval.oprice}}</div>
                            <div class="aui-list-item-right">已售{{= gval.salecount}}件</div>
                        </div>
                    </div>
                </div>
            </li>
            {{~ }}
        </ul>
    </div>
    {{? it.next == '1'}}
    <div id="more" onclick="ajaxGetMore('{{= it.category_id}}','{{= parseInt(it.page)+1}}')" style="margin: 15px;color:gray;text-align: center;">加载更多</div>
    {{??}}
    <div id="none" style="margin: 15px;color:gray;text-align: center;">没有了</div>
    {{?}}
{{?? }}
    <div style="margin-top:20px;text-align: center;color:gray;">
        暂无数据
    </div>
{{?}}
</script>

这里有个ajaxGetMore方法。处理加载更多数据。

设置一个base_area,专门装填上一页的数据。下一页的数据,继续在info_area中展示。

<div id="base_area" class="aui-content">
</div>
1)默认的ajax获取第一页数据js
// 获取分类商品信息
    api.ajax({
        url: BASE_SH_REQUEST_URL+'/?g=Api&m=Goods&a=getCategoryOptimizedGoods',
        method: 'get',
        data: {
            values: {
                category_id: category_id
            }
        }
    }, function(json, err) {
        if (json.status == '1' || json.status == '4') {
            var interText = doT.template($("#info_tmpl").text());
            $("#info_area").html(interText(json.info));
        } else {
            var toast = new auiToast();
            toast.fail({
                title: json.msg,
                duration: 2000
            });
        }
    });
2)ajaxGetMore获取更多js
// 获取更多
// page为下一页的数值
function ajaxGetMore(category_id,page) {
    var base_area = $api.byId('base_area'); 
    var goods_data= $api.byId('goods_data');
    $api.append(base_area,$api.html(goods_data));

    api.ajax({
        url: BASE_SH_REQUEST_URL+'/?g=Api&m=Goods&a=getCategoryOptimizedGoods',
        method: 'get',
        data: {
            values: {
                category_id: category_id,
                page:page,
            }
        }
    }, function(json, err) {
        if (json.status == '1' || json.status == '4') {
            var interText = doT.template($("#info_tmpl").text());
            $("#info_area").html(interText(json.info));
        } else {
            var toast = new auiToast();
            toast.fail({
                title: json.msg,
                duration: 2000
            });
        }
    });
}

核心就在这里

var base_area = $api.byId('base_area'); 
var goods_data= $api.byId('goods_data');
$api.append(base_area,$api.html(goods_data));

每次点击加载更多,都向base_area区域中把上一页的goods_data数据填入。通过append方法,可以很好的处理这种填入效果。

append,描述:在DOM元素内部,最后一个子元素后面插入HTML字符串。

html,描述:获取或设置DOM元素的innerHTML。

基本完美~


本文转自TBHacker博客园博客,原文链接:http://www.cnblogs.com/jiqing9006/p/5974366.html,如需转载请自行联系原作者

相关文章
|
移动开发 数据可视化 UED
从网页到应用:简易教程教你如何在线生成App
本文将介绍一种简便的方法,让您能够将网页封装成APP。通过这种技术,您可以将您的网页应用程序转化为移动应用程序,从而更好地满足用户的需求。无需编程知识,只需几个简单的步骤,即可轻松将您的网页转化为功能强大的应用程序。
|
11月前
|
监控 Apache PHP
301重定向详细教程
301重定向是一种HTTP状态码,用于指示网页已永久移至新位置,对SEO和用户体验至关重要。本文详解其作用、设置方法(如通过控制面板、Apache的mod_rewrite模块、IIS的URL重写模块、PHP代码及HTML标签)及注意事项,帮助网站管理员顺利完成URL永久重定向,确保网站平稳过渡和长期发展。
1251 101
|
存储 Python
INI文件介绍与Python处理指南
INI文件介绍与Python处理指南
|
11月前
|
SQL 关系型数据库 MySQL
除了使用cursor.execute()和executescript(),还有哪些可以手动进行参数化查询的方法?
除了使用cursor.execute()和executescript(),还有哪些可以手动进行参数化查询的方法?
292 73
|
12月前
|
搜索推荐 数据挖掘 大数据
利用CRM系统实现老客户自动化运营与维护策略
在数字化时代,CRM系统成为企业洞察老客户需求、自动化运营和维护的核心工具。通过数据驱动的客户反馈收集、个性化服务与分层管理、自动化营销、客户关怀及忠诚度计划,企业能提升客户满意度与留存率,促进业务增长。CRM系统助力精准分析客户行为,优化营销策略,确保企业长期发展。
|
传感器 人工智能 5G
|
数据处理
在Excel中,通配符是一种强大的工具
【10月更文挑战第23天】在Excel中,通配符是一种强大的工具
726 4
|
人工智能 算法 自动驾驶
人工智能浪潮之下的伦理困境:我们如何应对?
【8月更文挑战第10天】本文深入探讨了人工智能技术发展带来的伦理挑战,包括隐私泄露、就业置换、偏见增强和责任归属等问题。通过分析这些伦理问题的具体表现,文章提出了一系列应对策略,旨在为AI技术的健康发展提供指导性建议。
|
微服务 API Java
微服务架构大揭秘!Play Framework如何助力构建松耦合系统?一场技术革命即将上演!
【8月更文挑战第31天】互联网技术飞速发展,微服务架构成为企业级应用主流。微服务将单一应用拆分成多个小服务,通过轻量级通信机制交互。高性能Java Web框架Play Framework具备轻量级、易扩展特性,适合构建微服务。本文探讨使用Play Framework构建松耦合微服务系统的方法。Play采用响应式编程模型,支持模块化开发,提供丰富生态系统,便于快速构建功能完善的微服务。
211 0