我正在使用 JQM + Phonegap 开发一个应用程序。
为了避免设备减速和应用程序崩溃,我使用 JQM 单页导航模型,因为它允许自动 DOM 大小管理。
当用户导航时,我使用 href="page.html" 将页面动态注入到 DOM 中,并手动使用 changePage('page.html') 来处理用户交互。
因此,据我所知,在那些使用服务器数据的页面上,我需要:
- 将新页面加载(注入)到 DOM 以访问目标 div/容器
- 动态放置新数据(追加)
请查看此示例以进行说明:
function loadData (myJSONObject){
// inject page
$.mobile.changePage('page2.html');
//load data
for(var i=0; i<myJSONObject.data.length;i++){
name = myJSONObject.data[i].name;
link = myJSONObject.data[i].description;
// #listData is the target container from page2.html
$("<a />",{
text: name,
href: link
}).appendTo(
$("<li />",{
id: name,
}).appendTo('#listData'));
}
此代码导致一个空列表,因为由于 javascript 异步行为,JQM 页面注入函数比加载数据花费的时间更长
**注意:
- 使用多页模型和 changePage('#target') 作品
- 使用 setTimeOut() 进行测试并强制数据加载循环等待也可以,但我认为这不是最佳的,也不是一个好的开发实践
问题:只有当新页面完全注入 DOM 时,是否有回调或方法开始加载数据,所以目标容器的可用性?