loadmore

实例点击

loadmore.js

/*
*  loadmore.js require jQuery,artTemplate
*  Butterfly 2013.08.28
*/
define([‘../utils/artTemplate‘], function(template){

‘use strict‘;

    var defaults = {
        API: ‘http://www.1905.com/api/vod/vod_showtheme.php?id=684444‘,
        startIndex: 0,
        returnLength: 15,
        threshold: 100,        // Number 距离底部多少距离开始加载
        loader: ‘loading‘     //加载指示元素ID
    };

    var doc = document,
        html=‘‘,
        isLoading = false,

    closeToBottom = function(threshold) {
        return $(window).scrollTop() + $(window).height() > $(doc).height() - threshold
    },

    loadMore = function( target, options ){
        var o = $.extend( defaults, options ),
            $target = $(target),
            $loader = $(‘#‘ + o.loader);
        if ( ! isLoading && closeToBottom( o.threshold ) ) {
            isLoading = ! isLoading;
            $loader.show();
            $.ajax({
                url: o.API,
                data: {
                    s: o.startIndex,
                    n: o.returnLength
                },
                dataType: ‘jsonp‘,
                success: function (data) {
                    if (data && data.length) {
                        data.forEach(function( item, index ){
                            html = template( o.tpl, item );
                            var $item = $(html).css(‘transition‘, ‘400ms‘).appendTo( $target );
                            setTimeout(function(){
                                $item.addClass(‘fadeIn‘);
                            }, 100*index);
                        })
                        //$target.append(html)
                        if ( data.length == o.returnLength ) isLoading = ! isLoading;
                    } else {
                    }
                    $loader.hide();
                }
            });
            defaults.startIndex += o.returnLength;
        }
    };

    return function( target, options ) {
        loadMore( target, options );
        $(window).on(‘resize scroll load‘, M1905.fn.throttle( function(){
            loadMore(target)
        }, 200 ) );
    }

});

2) 在js中配置:

var beginTime = +new Date,
     disableCache = ($.browser.msie && $.browser.version == 10),
     fresh = disableCache ? (‘?t=‘ + beginTime) : ‘‘;

   //加载更多
    M.use(‘http://js.static.m1905.cn/ui/loadmore.js‘ + fresh, function (loadmore) {
        loadmore( $(‘.mod-relate‘).find(‘.mod-bd‘), {
            API: ‘http://www1.1905.com/api/special/tfsj.php?keywords=‘+ encodeURIComponent(SPECIALCONFIG.keywords),
            startIndex: 3,        //页面刷新时加载的数据条数
            returnLength: 3,      //每次加载的数据条数
            threshold: 100,       // Number 距离底部多少距离开始加载
            loader: ‘loading‘,
            tpl: ‘theme_list_tpl‘   //模版ID
        })
    });

3) 在页面内后台先循环几条,然后写入模板

 <!-- 加载更多模板 START-->
        <div class="loading-box" id="loading"><i></i>正在加载</div>
        <script type="text/javascript">
          if(mid == 6){
                <div class="bd video clearfix">
          }else{
                <div class="bd clearfix">
          }
        </script>
        <script id="theme_list_tpl" type="text/tpl">
          <% if (mid==6) {%> <div class="bd video clearfix"> <% }else {%><div class="bd clearfix"><%}%>
             <a href="http://www.1905.com/<%=url%>" target="_blank" class="fl">
                <img src="<%=thumb%>" height="150" width="200"> <i class="icon"></i>
             </a>
             <div class="r-news fr">
                 <a href="http://www.1905.com/<%=url%>" target="_blank" class="r-title"><%=title%></a>
                 <span class="r-date"><%=date%></span>
                 <a href="http://www.1905.com/<%=url%>" target="_blank" class="r-sum"><%=description%></a>
              </div>
          </div>
        </script>
        <!-- 加载更多模板 END-->

4) 在控制台中看请求:

s的值在依次累加   取值为 每次滑动的时候从哪条数据开始加载

时间: 2024-11-08 23:59:55

loadmore的相关文章

vue2 mint-ui loadmore(下拉刷新,上拉更多)

<template> <div class="page-loadmore"> <h1 class="page-title">Pull up</h1> <p class="page-loadmore-desc">在列表底部, 按住 - 上拉 - 释放可以获取更多数据</p> <p class="page-loadmore-desc">transl

[ionic开源项目教程] - 第12讲 医疗模块的实现以及Service层loadMore和doRefresh的提取封装

关注微信订阅号:TongeBlog,可查看[ionic开源项目]全套教程. 这一讲主要实现tab2[医疗]模块,[医疗]模块跟tab1[健康]模块类似. [ionic开源项目教程] - 第12讲 医疗模块的实现以及Service层loadMore和doRefresh的提取封装 [效果图] 1.实现tab2.html[医疗]模块的视图部分实现(跟tab1.html类似): <ion-view view-title="医疗"> <ion-slide-box show-pa

第五天 loadmore

mutating func loadFresh(completion: (result: APIResult<DeserializedType>) -> ()) -> CancellableToken { self.currentPage = 1 // self.isNoMoreData = false return self.doRequest() { result in if case .Success(let entities) = result { if entities.

Vue-上拉加载与下拉刷新(mint-ui:loadmore)一个页面使用多个上拉加载后冲突问题

所遇问题: 该页面为双选项卡联动,四个部分都需要上拉加载和下拉刷新功能,使用的mint-ui的loadmore插件,分别加上上拉加载后,只有最后一个的this.$refs.loadmore.onTopLoaded();和this.$refs.loadmore.onBottomLoaded(); 有效,其他的三个都无效,这两句话是意思是查询完要调用一次,用于重新定位 分析原因: 首先这四个模块都是用的 <mt-loadmore :top-method="loadTop" :bott

mint-ui loadmore组件注意问题

loadTop(){ this.$store.dispatch('getNewsList',{channelId:this.id,page:0,size:this.size}); this.$refs.loadmore.onTopLoaded(); }, 比如在做下拉刷新的时候,切记在下拉刷新的函数中要加 this.$refs.loadmore.onTopLoaded(); 这行代码,否则下拉加载之后一直显示加载中,而不会加载完成.

Mint-ui中loadmore(上拉加载下拉刷新)组件在ios中滑动会触发点击事件的解决方法

bug说明: Mint-ui中loadmore(上拉加载下拉刷新)组件 在 使用fastclick的情况下 ,在ios设备中滑动会触发点击事件: 解决方法: 我是按需引入,去项目中找到loadmore下的index.js,全部引入的要找mint下面mint-ui.common.js 路径如下:你的项目名/node_modules\mint-ui\lib\loadmore\index.js 搜索 handleTouchEnd ,记得写event进去 handleTouchEnd: function

vue loadMore 上拉刷新不能实现的坑

1.如果你写的代码没问题,但依然不能实现上拉刷新效果,那你有可能是缺少了overflow: scroll 2.如果上拉刷新一直在加载状态,需要调用this.$refs.loadmore.onBottomLoaded();监控通知上拉操作已经完结 loadBottom:function(){ console.log("上拉触发啦"); //通知上拉操作已经完结 // console.log(this.$refs.loadmore.onBottomLoaded()); this.$refs

Mint UI 的 Infinite scroll 无限滚动组件 一直触发 loadMore

项目中有用到  Infinite scroll  无限滚动组件 发现一个神奇的问题, loadMore 一直无限触发,黑人问号 ??? 几经百度,谷歌,终于解决l, 此文仅做记录 话不多说,直接看问题 官方地址:http://mint-ui.github.io/#!/zh-cn import import { InfiniteScroll } from 'mint-ui'; Vue.use(InfiniteScroll); HTML: <ul v-infinite-scroll="load

mintui loadmore组件使用+代码优化

先上代码 // home.vue <template> <div> <mt-navbar v-model="selected" ref="navbar"> <mt-tab-item id="1">待处理</mt-tab-item> <mt-tab-item id="2">已完成</mt-tab-item> </mt-navbar>