【发布时间】:2017-07-05 19:09:34
【问题描述】:
我基于 primefaces 数据表做了一个简单的滚动内容加载功能:
PF('tableWidget').jq.bind("scrollstop", function() {
var t = PF('tableWidget');
if(t.jq.scrollTop() + t.jq.height() >= t.jq.children().height()) {
var rows = t.jq.find('tr'); //save current rows
$.ajaxSetup({async: false}); //ajax set sync
t.paginator.setPage(t.paginator.cfg.page + 1); //framework pagination function with an ajax call inside (and other stuff) to get new rows
rows.prependTo(t.jq.find('tbody')); //AFTER pagination, add old rows
$.ajaxSetup({async: true}); //ajax set async again
}
});
解释:当用户向下滚动到数据表的底部时,我只是使用分页,但保存之前的旧行。完成分页后,我再次添加行。这留给了一个超级酷的基于滚动的加载,其中只需要从服务器加载新数据,而不是再次加载旧内容。
但正如我在其他问题中所读到的,使用同步 ajax 调用是不好的做法。
重写“t.paginator.setPage(x)”函数并不容易,因为在这个函数中任何地方都有ajax调用。
有没有办法包装整个函数,并为其添加一些成功回调,而无需深入了解真正的基本 ajax 调用?
非常感谢!
【问题讨论】:
标签: javascript jquery ajax primefaces pagination