前記事の続き。Google App Engineのデータストアからデータを読み込み、jQuery Mobileのリストビューを使って一覧表を表示する。以下ではタグの一覧表ページ(#pgPlanList)を例にとってコードを説明する。
- データストアからデータを読み込む
// JavaScript
// #pgPlanListページが表示されるときに呼ばれる
$(document).on('pagebeforeshow', '#pgPlanList', function(e){
loadTagPlanM(); // データストアから読み込み
});
function loadTagPlanM(){
// データストアからtagの一覧を読み込む
// 条件:プロパティ:tag_nameで昇順、プロパティ:tag_statusが'live'のエンティティ
gDStagPlan.dbRevAll2('tag_name:ASCENDING', 'tag_status:live', function(tags){
showTagPlanListM(tags); // 結果をリスト表示する
gTagPlan = tags;
});
}
データ読み込みは非同期処理なので、読込関数: gDStagPlan.dbRevAll2()の読み込み完了後に表示関数: showTagPlanListM()を呼び出している。
jQuery Mobileでは、リスト表示用に「リストビュー」(data-role=”listview”)というウィジェットが用意されている。
<!-- HTML --> <!-- 空のリストを用意しておく --> <ul data-role="listview" id="lvTagPlan" data-inset="true"></ul> <!-- data-inset="true"で左右に余白+角丸のリストになる -->
// JavaScript
function showTagPlanListM(tags){
var lvItem = '';
$('#lvTagPlan').empty(); // リストビューをクリアする
for (var i=0; i < tags.length; i++ ){
lvItem = '<li><a href="#pgPlan">' +
tags[i].tag_memo + ' - ' + tags[i].tag_name + '</a></li>'
$('#lvTagPlan').append(lvItem); // リストに項目追加
}
$('#lvTagPlan').listview('refresh'); // スタイルを明示的に更新
}
アイテムにリンク(a href)を設定することで、このリストはリンクリストになり、見た目が変化する(右端にアイコンがセットされる)とともに、クリックするとリンク先の画面にジャンプするようになる。なお、データストアtag_memoには予定日付がセットされているので、このコードで追加されるソース例は以下のとおり。
<li><a href="#pgPlan">2013/04/03 - 買い物</a></li>
コードでアイテムを追加した場合は、refresh()メソッドをコールして明示的にスタイルを更新するのを忘れないこと。


ピンバック: モバイル版チェックイン予定表(3) リストビューのクリックで次画面を表示 | Try Lifelog