JQM + Phonegap を使用してアプリを開発しています。
デバイスのスローダウンとアプリケーションのクラッシュを回避するために、自動 DOM サイズ管理が可能な JQM シングル ページ ナビゲーション モデルを使用しています。
ユーザーがナビゲートするときに、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 に完全に挿入された場合にのみデータの読み込みを開始するコールバックまたは方法はありますか?