2

Phonegap と jQuery Mobile を使用してモバイル アプリを開発しているときに問題が発生しました。

ページが表示される前に毎回チェックするエントリ条件がありますpage A。条件が false になると、アプリを別のページに移動しますpage X。page event を使用してそれを行いましたpagebeforeshow

しかし、私の問題は...

イベントを使用したにもかかわらずpagebeforeshow、ページpage Aが表示されています。すなわち; がpage A一度表示された後、アプリは に移動しpage Xます。page A条件が間違っている場合、これを表示したくありません。つまり、そのページの表示イベントをキャンセルして、別のページに移動します。

あなたが私が尋ねたものを持っていることを願っています.

なぜそうなのですか?私の仕事を完全に達成できる他の方法はありますか?

どんな種類の助けでも大歓迎です!:)

4

1 に答える 1

1

この場合、イベントを使用しないでくださいpagebeforeshow。これは、トリガーする最後のページイベントの1つです。その時点で、2番目のページがすでに作成されており、表示する準備ができています。これは、2番目のページが作成される前に実行する必要があります。

最初に私の他の記事を見てください。そこには、1ページから2ページへの移行中のページイベントのリストがあります。または、ここで見つけることができます。

問題について、問題を修正するために使用できるコードを次に示します。これは、pagebeforechangeイベント(ページ遷移中にトリガーされる最初のイベント)を使用しています。

$(document).on('pagebeforechange', function(e, data){  
    var to = data.toPage,
        from = data.options.fromPage;

    if (typeof to  === 'string') {
        var u = $.mobile.path.parseUrl(to);
        to = u.hash || '#' + u.pathname.substring(1);
        if (from) from = '#' + from.attr('id');

        if (from === '#index' && to === '#second') {
            alert('Can not transition from #index to #second!');
            e.preventDefault();
            e.stopPropagation();

            // remove active status on a button, if transition was triggered with a button
            $.mobile.activePage.find('.ui-btn-active').removeClass('ui-btn-active ui-focus ui-btn');;
        }  
    }
});

そして、これが実際のjsFiddle例です:http: //jsfiddle.net/Gajotres/3PhKZ/、次のボタンをクリックしてページ変更をトリガーする必要があります。

于 2013-02-17T09:00:43.767 に答える