1

フォーラムを何度もグーグルで読んだり読んだりした後、適切な答えが見つかりませんでした。

これまでのところ、私が見つけたのは以下のようなものだけです:

  • 読み込み中のメッセージを表示
  • 通話変更ページ
  • ロード中のメッセージを隠す

これは機能しますが、ページの読み込み/変更を呼び出すたびにこれを行う必要があります (これはかなりの量です)。

これにより、仲介者を以下のように機能させることができます。

function customLoader(url){
    showLoader();
    $.mobile.changePage(url);
    hideLoader();
}

ページ変更イベントにバインドする方法はありますか? 2番目のchangePageから表示されるように呼び出されますが、changePageが離れると非表示になります...

上記の仲介者の方法が機能することはわかっていますが、多くのhtml/jsファイルがあるため、よりきちんとした、より適切なものを実装したいと考えています。

4

2 に答える 2

3

このようなもの:

$('#index').live('pagebeforeshow',function(e,data){    
    $('#test-button').live('click', function(e) {
        $.mobile.showPageLoadingMsg(true);
        setTimeout(function () {
            $.mobile.changePage('#second');
        }, 1000);
    });    
});

$("#second").live('pageshow', function () {
    $.mobile.hidePageLoadingMsg();
});

タイムアウトはここにあるだけなので、正常に機能していることがわかります。これは軽い例なので、トランジションはすぐに開始されます。実際のコードでそれを削除してください。

そして、ここに例があります:http://jsfiddle.net/Gajotres/arrHd/

すべての変更ページ イベント サイクルには、ページ A がページ B に遷移するときに発生するイベントの順序があります。変更ページをトリガーするために使用されるアクションに関係なく、ページ B が正常に読み込まれたときにいつでも無効にすることができます。ページの読み込み順序について詳しく知りたい場合は、次のリンクをご覧ください: https://stackoverflow.com/a/14010308/1848600。そこでは、jQM ページのダイナミクスについて多くのことがわかります。

これをすべてのページ遷移に実装したい場合は、これを使用します:

$('[data-role="page"]').live('pageshow', function () {
    $.mobile.hidePageLoadingMsg();
});

これにより、別のページが正常にロードされて表示されるたびに ajax ローダー (開いている場合) が非表示になります。

于 2013-01-04T10:16:29.693 に答える