jQuery Mobile と PhoneGap を使用してモバイル アプリをセットアップしています。私がやりたいことは、ID「news_link」のリンクをクリックすると、jQuery がデータベースからデータを取得し、それを jQm の折りたたみ可能なセットに入れることです。私のソリューションでは、コールバック関数内で $.mobile.changePage を使用したいと考えていました。コードがページを変更する前に、データがフェッチされてコンテナー内に配置されるまで待ちたいからです。コードは次のとおりです。
$(function() {
$('#news_link').click(function(){
loadNewsFromDB(function(){
$.mobile.changePage( $("#news"), { transition: "slideup"} );
});
});
loadNewsFromDB は PhoneGap の SQLite データベース関数で、データベースからコールバック関数を追加してデータをフェッチします。コンテンツは、.html-function を使用して目的のコンテナーに配置されます。
function loadNewsFromDB(){
//some code here
theDB.transaction(function(tx) {
tx.executeSql(sqlStr, [], onLoadNewsSuccess, onLoadNewsError);
},onTxError, onTxSuccess);
function onLoadNewsSuccess(tx, results){
//some code here
$("#newsSet").html(htmlCodeAndContentToPut);
Html は jQm の基本的な ui モジュールです。
<!-- some html code here --!>
<div data-role="page" id="news">
<div data-role="content">
<div id="newsSet" data-role="collapsible-set" data-mini="true">
デバッグを行うと、$.mobile.changePage-function に到達するまでコードがうまく機能することがわかります。どういうわけかそれはページを変更しません。関数が他の場合にうまく機能することを確認しましたが、コールバック関数内では機能しません。
誰かが私に手を差し伸べてくれたら、とても感謝しています。SQLite からデータをフェッチし、データがフェッチされるのを待ち、データをコンテナに入れ、ページを変更するための他の回避策はありますか?