2011-08-11 8 views
4

jQuery Mobileを使用してwebappを作成しています。このメソッドは、localStorageにレコードをロードし、ページが最初のときにリモートJSONファイルからリストビューを作成する関数を呼び出します(ページのlive.pagecreate()イベントを使用して)作成されました。この関数の冒頭には、jQuery Mobileメソッド$.mobile.showPageLoadingMsg()$.mobile.hidePageLoadingMsg()が関数の最後にあります。jQuery Mobile showPageLoadingMsg()/ hidePageLoadingMsg()メソッドが初期ページで機能しないloadn

最初のページ作成時に、読み込みメッセージが表示されません(iOS 4.3 Safari、Chrome 13、Firefox 5のiPhone 4)。しかし、私はまた、ページにリフレッシュボタンを持っています。このボタンは、localStorage内の関連するレコードをクリアしてから、最初にlistviewに入力するのと同じ関数を呼び出します。ただし、同じ機能をリフレッシュボタンから呼び出すと、showPageLoadingMsg()hidePageLoadingMsg()が正しく動作し、読み込み画面が表示され、消えます。私はここに何かを逃していますか

ETAここにコードの要点があります(実際のコードの前には必要ありませんが、今夜はそれを入れます)。また、私は.ready(文書)でshowPageLoadingMsgを置くことを試みたとmobileinitにバインドしようとしたことを言及しておらず、どちらも働いている必要があります:最初のページの間に呼び出されるこれらのハンドラのために

function loadListView(){ 
    $.mobile.showPageLoadingMsg(); 
    //ajax call to pull JSON 
    //$.each loop to load localStorage and listview 
    $.listview.refresh('list'); 
    $.mobile.hidePageLoadingMsg(); 
} 

$(#listpage).live('pagecreate', function(event){ 
    loadListView(); // showPageLoadingMsg() and hidePageLoadingMsg do not work when the function is called here 
}); 

function clearList(){ 
    //for loop that clears each item in localStorage that matches the key prefix set in loadListView 
} 

//runs when refresh button is clicked 
$('listrefresh').live('click',function(){ 
    clearList(); 
    loadListView(); //showPageLoadingMsg() and hidePageLoadingMsg() work when the function is called here 
}); 
+0

質問を編集して試したコードを追加できますか? –

+0

@Phill私は上記の一般的なコードを追加しました。必要に応じて、私は後でその前にいるときに実際のコードを追加することができます。 – scottoliver

+0

ちょうど指摘すると、あなたはこれを使うべきではなく、.clickを使うべきではありません。 $( 'listrefresh')。live( 'click'、function(){/ *ここにあなたのコード* /}); jquery mobileベータ版を使用している場合は、1.クリックの代わりにvclickを使用してください。 – root

答えて

1

を ロードするには、jQuery Mobileを実行する前にそれらをバインドする必要があります。グローバルコンフィグ ページに記載されているように、これはのmobileinitハンドラで行うことができます。

ドキュメント:初期化が発生した後に、初期化されているページでトリガ

。 は、ページが直接ロードされているか、 コンテンツがAjaxナビゲーション システムの一部として別のページにプルされているかどうかに関係なく、DOM ready()の代わりにこのイベントにバインドすることをお勧めします。

例:最初のページロードのライブイベント火災の例なしで

、あなたがmobileinitにこのタイプのアクションを設定する必要があります。

+0

mobileinitでpageshowイベントを使用すると機能します。しかし、リストビューを読み込んだりリロードしたりするときにはページロードメッセージを表示するだけで済むので、時間がかかる部分です。現在、リストビューにデータが入力されていてもページが表示されるたびにロードメッセージがロードされます。私はこれを解決するための最善の方法に取り組んでいます。 – scottoliver

関連する問題