用于加载联系人的Phonegap Jquery分页-如何在用户到达最后一页时动态添加页面?

用于加载联系人的Phonegap Jquery分页-如何在用户到达最后一页时动态添加页面?,jquery,dynamic,pagination,Jquery,Dynamic,Pagination,我有一个需要使用分页的特定场景 在Phonegap中,从Android联系人加载时,当用户浏览页面时,当用户单击分页中的最后一页时,我希望将另一组联系人列表动态加载到添加到现有分页的新页面集中 我这样做是因为我必须加载1000多个联系人的列表,我不想在初始快照本身加载这些联系人,即使只是分页 我找到了动态创建页面的链接,但没有一个有我的特定要求(当用户到达最后一页时将新列表加载到新页面) 这个链接是到目前为止我找到的最好的链接,但我仍然需要一种方法来识别用户是否已到达分页的最后一页 注意:这不是

我有一个需要使用分页的特定场景

在Phonegap中,从Android联系人加载时,当用户浏览页面时,当用户单击分页中的最后一页时,我希望将另一组联系人列表动态加载到添加到现有分页的新页面集中

我这样做是因为我必须加载1000多个联系人的列表,我不想在初始快照本身加载这些联系人,即使只是分页

我找到了动态创建页面的链接,但没有一个有我的特定要求(当用户到达最后一页时将新列表加载到新页面)

这个链接是到目前为止我找到的最好的链接,但我仍然需要一种方法来识别用户是否已到达分页的最后一页

注意:这不是一个ajax请求,而是一个phone gap api,它从本地android联系人获取联系人,我必须手动迭代对象并动态创建列表

此外,由于使用分页插件时分页按钮是默认设置,我不知道如何向这些页面按钮添加事件或调整它们

我的代码片段:

navigator.contacts.find(filter, onSuccess, onError, options);

function onSuccess(contacts) {
    var html = "";
    for (var i = 0; i < contacts.length; i++) {
    if ($.trim(contacts[i].displayName).length != 0 || $.trim(contacts[i].nickName).length != 0) {
        html += '<li>';
        html += '<h2>' + contacts[i].displayName ? contacts[i].displayName : contacts[i].nickName + '</h2>';
        if (contacts[i].phoneNumbers) {
            html += '<ul class="innerlsv" data-role="listview" data-inset="true">';
            html += '<li><h3>Phone Numbers</h3></li>';
            for (var j = 0; j < contacts[i].phoneNumbers.length; j++) { var dialPadVar = '#main-wrapper'; 
                html += "<li onclick=\"contactAppendNumber('"+contacts[i].phoneNumbers[j].value+"');changePage('#main-wrapper');\">Type: " + contacts[i].phoneNumbers[j].type + "<br/>" +
                    "Value: " + contacts[i].phoneNumbers[j].value + "<br/>" +
                    "Preferred: " + contacts[i].phoneNumbers[j].pref + "</li>";
            }
            html += "</ul>";
        }
        html += '</li>';
    }
}
if (contacts.length === 0) {
    html = '<li data-role="collapsible" data-iconpos="right" data-shadow="false" data-corners="false">';
    html += '<h2>No Contacts</h2>';
    html += '<label>No Contacts Listed</label>';
    html += '</li>';
}
$("#contactsList").html(html);
$("#contactsList").listview().listview('refresh');
$(".innerlsv").listview().listview('refresh');

}
navigator.contacts.find(过滤器、onSuccess、onError、选项);
成功时的功能(联系人){
var html=“”;
对于(变量i=0;i”;
html+=''+联系人[i]。显示名称?联系人[i]。显示名称:联系人[i]。昵称+'';
如果(联系人[i]。电话号码){
html+='
    ; html+='
  • 电话号码
  • '; 对于(var j=0;j类型:“+contacts[i].phoneNumbers[j].类型+”
    ”+ “值:”+联系人[i]。电话号码[j]。值+”
    ”+ 首选:“+联系人[i]。电话号码[j]。pref+””; } html+=“
”; } html+=''; } } 如果(contacts.length==0){ html='
  • '; html+=‘无联系人’; html+='未列出联系人'; html+='
  • '; } $(“#联系人列表”).html(html); $(“#contactsList”).listview().listview('refresh'); $(.innerlsv”).listview().listview('refresh'); }
    我以前遇到过你的问题-典型的
    导航.contacts.find()
    返回所有当前联系人,超过1000个。而且
    filter
    参数不利于分页

    在我得到联系人数组后,我将它们分为页面(每页50个),但实际上所有联系人都已加载

    我认为最好的方法是改进
    PhoneGap
    API,以允许对返回的联系人进行偏移和限制。一种解决方法是第一次加载联系人,然后自己管理(例如,将记录写入本地sqlite)

    对于
    jQuery
    插件,如果我正在使用它,我只需要使用工具(例如Chrome)观察分页按钮
    IDs
    类名
    ,并在
    $(document).ready()上添加一个侦听器


    如果您的意思是按钮未在开始时呈现,因此无法将侦听器绑定到其自身,则可能需要
    $(document).on('click','button.pagination',function(){…})它要求父节点(这里我直接使用文档)充当事件的代理。
    'button.pagination'
    是动态生成的分页按钮(在您的情况下更改为适当的元素)。

    但是为了实现本机速度,我使用插件调用android本机联系人应用程序

    如果任何人有我的问题,他们可以使用这种方法,因为它可以在设备上提供最佳性能

    参考链接


    你做了什么?根据您的描述,我认为在通过AJAX或非AJAX单击其中一个页面按钮时(从服务器)加载额外项目没有任何困难。@mr很抱歉,我使用Phonegap加载Android联系人,因此这不是AJAX调用。使用插件时的分页按钮也是默认的,所以我不知道如何向这些页面按钮添加事件或调整它们。我已经编辑了我的问题,请重新阅读