我最近开始为我所在的开普敦市创建一个交通移动网站,以庆祝交通月。它似乎运作良好,但是我从用户那里收到一致的反馈,他们特别是在与一个列表视图作斗争,这是加载到这个多页中的“位置”列表视图:http: //findmyway.mobi/GoldenArrow/index。 aspx
该列表是通过页面加载时的 JSON 对象动态创建的,因此我希望一旦用户单击位置链接以显示列表,它应该立即加载,因为它已经在初始页面加载时创建。
滞后似乎只在移动设备而不是台式机上出现问题,并且在使用 JQM listview-filter 以及选择列表项时会发生。下面是生成位置列表视图的代码。如您所见,此代码在最初加载多页时运行一次,因此在用户单击位置列表视图时应该很容易完成。我已经简化了 JS,并插入了一个 APPKey 供测试使用:
if (event.type == 'pageinit') {
jsonURL = "http://api.wimt.co.za/v1/json/public.svc/" + "GetStopNames?op=metrorail&appKey=" + "9A4A49F1-7051-45C6-B4B1-10DF2C016874";
$.ajax({
url: jsonURL,
dataType: 'jsonp',
success: function (data) {
$.each(data, function (key, val) {
items = [];
$.each(data['GetStopNamesResult']['Results'], function (index, value) {
if (value.charAt(0).toUpperCase() == curChar) {
items.push('<li class="ui-btn-icon-left" data-icon="arrow-l"><a href="#' + provider + '" data-direction="reverse">' + value + '</a>');
}
else {
curChar = value.charAt(0).toUpperCase();
items.push('<li data-role="list-divider">' + curChar + '</li>');
items.push('<li class="ui-btn-icon-left" data-icon="arrow-l"><a href="#' + provider + '" data-direction="reverse">' + value + '</a></li>');
}
});
$('#locList').append(items.join(''));
for (i = 0; i < items.length; i++) {
items[i].replace('locListIcon', 'destListIcon');
}
$('#destList').append(items.join(''));
});
},
error: function () {}
});
}
以下是上述 JS 影响的 HTML:
<!-- Start of Location Selection page -->
<div data-role="page" id="GAloc" data-title="Golden Arrow Stop Locations" data-theme="a" data-content-theme="a">
<div data-role="header" data-theme="e"><h1>Locations</h1><a data-rel="back">Back</a></div>
<div data-role="content">
<ul id="locList" data-role="listview" data-inset="true" data-filter="true" data-split-theme="e" data-divider-theme="e"></ul>
</div>
<div data-role="footer" class="header" data-theme="f"><img class="banner" src="../img/banner/greenpopBanner.png" alt="http://www.greenpop.org"/></div>
</div>
从构思到发布,这是一个疯狂的 34 天,这是我无法理解的最后一个与性能相关的问题。我希望有人可以帮助我解决这个问题。
非常感谢,德文