0

jqmとローカルストレージに基づくモバイルアプリを開発しています

ここで見ることができます:

clients/app2u/Apps/6/home.html
clients/app2u/Apps/6/gallery.html
clients/app2u/Apps/6/categories.html

等'

ローカル ストレージには、各ページのデータ (例: "app2u_app6_home") と一般的なタブ データ ("app2u_app6_Tabs") が含まれます。

問題は、ページに最初にアクセスしたときに、データが完全に読み込まれる前にページが読み込まれ、ページを更新した場合にのみページにデータが含まれることです。

ローカル ストレージの準備が整った後にのみページを表示するにはどうすればよいですか?

4

1 に答える 1

0

注:サイトのgetPageData関数を参照していると想定しfunctions.jsています。

問題は、$.post呼び出しが非同期であるlocalStorage.getItemため(への呼び出しとは異なり)、getPageData関数がすぐに戻ることができないことです。

代わりに、コールバック関数を受け入れるようにリファクタリングする必要があります。

function getPageData(page,wait,extra_data,callback) {
    if (localStorage.getItem(unique_param+page)) {
        callback(localStorage.getItem(unique_param+page, extra_data));
    } else {
        if (typeof(extra_data) == 'undefined') {extra_data = '';}
        $.post(server_path + 'index.php?module=API&pname=' + page + '&pmode=empg&application_id=' + application_id + extra_data,
                function(response) {
                    localStorage.setItem(unique_param+page,JSON.stringify(response));
                    callback(response);
                }
        ,'json'
        );
    }
}

このメソッドを使用すると、コードは常にローカルストレージへの呼び出しまたはサーバーへの呼び出しが完了するのを待ちます

于 2012-11-19T14:33:19.360 に答える