@qingjieshouliang
| Current Path : /www/wwwroot/eblliwsm.com/c7bd1a80/Extend/Tool/TPM/Tpl/Public/js/ |
| Current File : /www/wwwroot/eblliwsm.com/c7bd1a80/Extend/Tool/TPM/Tpl/Public/js/TPMlist.js |
//列表插件
//元素属性: data-api,请求api地址 ; data-datas 请求参数 data-tpl 模板地址 data-tabletpagesize 平板每页显示条数, data-phonepagesize 手机每页显示条数
//author : luofei614<http://weibo.com/luofei614>
;(function($){
$.fn.extend({
'TPMlist':function(options){
var defaults={
"param_pagesize":"pagesize",
"param_page":"page",
"tabletpagesize":40,
"phonepagesize":20
};
options=$.extend(defaults,options);
$(this).each(function(){
//获得api
var api=$(this).data('api');
//获得请求参数
var datas=$(this).data('datas');
//获得模板
var tpl=$(this).data('tpl');
//获得数据集合名称
//获得pagesize
var type=$(window).height()>767?'tablet':'phone';
var defaultpagesize='tablet'==type?options.tabletpagesize:options.phonepagesize;//默认每页显示条数
var pagesize=$(this).data(type+'pagesize') || defaultpagesize;
$children=$('<div><div class="list_content">加载中..</div></div>').appendTo(this).find('.list_content');
//下拉刷新
var sc=$(this).TPMpulltorefresh(function(){
$children.TPMgetListData(api,datas,tpl,pagesize,1,this,options);
});
$children.TPMgetListData(api,datas,tpl,pagesize,1,sc,options);
});
},
'TPMgetListData':function(api,datas,tpl,pagesize,page,sc,options){
var params=datas?datas.split('&'):{};
var datas_obj={};
for(var i=0;i<params.length;i++){
var p=params[i].split('=');
datas_obj[p[0]]=p[1];
}
datas_obj[options.param_pagesize]=pagesize;
datas_obj[options.param_page]=page;
var $this=$(this);
//请求api
TPM.sendAjax(api,datas_obj,'get',function(response){
//渲染模板
$.get(tpl,function(d,x,s){
var html=TPM.parseTpl(d,response);
//判断是否为第一页,如果为第一页,清空以前数据然后重新加载,如果不是第一页数据进行累加
if(1==page){
$this.empty();
}
$this.find('.getmore').remove();//删除以前的加载更多
$this.append(html);
if(response.currentpage!=response.totalpages){
//加载更多按钮
$more=$('<div class="getmore">加载更多</div>');
$more.appendTo($this);
$more.click(function(){
$(this).html('加载中...');//TODO 加载中样式
$this.TPMgetListData(api,datas,tpl,pagesize,parseInt($this.data('currentpage'))+1,sc,options);
});
}
sc.refresh();//iscroll refresh;
//记录当前页面
$this.data('currentpage',response.currentpage);
},'text')
});
},
//下拉刷新
'TPMpulltorefresh':function(cb){
//增加下拉刷新提示层
var $pulldown=$('<div class="pullDown"><span class="pullDownIcon"></span><span class="pullDownLabel">下拉可以刷新</span></div>')
$pulldown.prependTo($(this).children());
var offset=$pulldown.outerHeight(true);
var myScroll=new iScroll($(this)[0],{
useTransition: true,
topOffset:offset,
hideScrollbar:true,
onRefresh: function () {
$pulldown.removeClass('loading');
$pulldown.find('.pullDownLabel').html('下拉可以刷新');
},
onScrollMove: function () {
if (this.y > 5 && !$pulldown.is('.flip')) {
$pulldown.addClass('flip');
$pulldown.find('.pullDownLabel').html('松开可以刷新');
this.minScrollY = 0;
} else if (this.y < 5 && $pulldown.is('.flip')) {
$pulldown.removeClass('flip');
$pulldown.find('.pullDownLabel').html('下拉可以刷新');
this.minScrollY = -offset;
}
},
onScrollEnd: function () {
if($pulldown.is('.flip')){
$pulldown.removeClass('flip');
$pulldown.addClass('loading');
$pulldown.find('.pullDownLabel').html('加载中...');
cb.call(this);//触发回调函数
}
}
});
return myScroll;
}
});
})(jQuery);