这次做一个H5的页面,需要用到上拉加载,下拉刷新的功能,在网上看到ximen写的dropload.js可以满足需求(此处致谢作者),但是用的时候还是踩了一些坑,这里记录下来备忘。
一些小问题:
1. me.noData(); 和 me.noData(true);
表示当前无数据,也就是会在下方出现 (暂无数据)的表示
me.noData(false);则表示有数据,这时不会显示(暂无数据)
2. 如果不希望用户继续加载数据则需要锁定,这时候需要用 me.lock(); 如果需要开放则需要 me.unlock();
有个比较麻烦的点是 : 你如果仅仅 me.unlock()了,其实你会发现无法下拉,为啥呢? 因为 me.noData(), 这里需要告诉dropload有数据了,继续吧, 所以需要调用 me.noData(false)
1. 调用handler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
var searchHelper = {
droploader: null ,
params: {
pageNo: 1,
pageSize: 10
},
init: function () {
var me = searchHelper;
me.droploader = $( '.free-list' ).dropload({
scrollArea : window,
loadUpFn: function (wo) {
me.refreshFunc(wo);
},
loadDownFn: function (wo) {
me.loadFunc(wo);
}
});
},
refreshFunc: function (droploader) {
var me = searchHelper;
me.params.pageNo = 1;
$.ajax({
type: 'POST' ,
url: '/search/test' ,
dataType: 'json' ,
data: me.params,
success: function (result) {
//重置
droploader.resetload();
if (result.statusCode == 0 && result.data && result.data.length > 0) {
me.resetRenderFunc();
me.renderFunc(result.data);
//有数据
droploader.noData( false );
me.params.pageNo++;
} else {
//无数据
droploader.noData();
}
//重置
droploader.unlock();
},
error: function (xhr, type) {
console.log( '加载数据错误-' + type);
droploader.resetload();
}
});
},
loadFunc: function (droploader) {
var me = searchHelper;
$.ajax({
type: 'POST' ,
url: '/search/test' ,
dataType: 'json' ,
data: me.params,
success: function (result) {
if (result.statusCode == 0 && result.data && result.data.length > 0) {
me.renderFunc(result.data);
} else {
//锁定
droploader.lock();
//无数据
droploader.noData();
}
//重置
droploader.resetload();
me.params.pageNo++;
},
error: function (xhr, type) {
console.log( '加载数据错误-' + type);
droploader.resetload();
}
});
},
renderFunc: function (data) {
var info = '' ;
$.each(data, function (index, entity) {
info += '<li>' + entity + '</li>' ;
});
$( '.free-list ul' ).append(info);
},
resetRenderFunc: function () {
$( '.free-list ul' ).empty();
}
}; |
2. [代码]外部重新加载数据的方式
1
2
3
4
5
6
7
8
|
$( '#btn' ).click( function () {
$( '.free-list ul' ).empty();
searchHelper.params.pageNo = 1;
// 解锁
searchHelper.droploader.unlock();
searchHelper.droploader.noData( false );
searchHelper.droploader.resetload();
});
|
转自:simananzhui