1

現在、単純な jQuery Mobile アプリケーションを構築しています。現在、ページのロードの前後に何かをしたい場合は、次の呼び出しフックを使用します。

ページが表示されている場合 (例: データ/テンプレートを挿入する場合):

$(window).on('pageshow', function() {
        if ($('#pageId').length > 0) {

            doStuff();

        }
});

ユーザーが新しいページに移動した場合 (そしていくつかの値を保存したい場合):

$(document).delegate('#pageId #buttonNext', 'click', function() {
    doStuff();
});

2 つの質問があります。

これを行うためのより良い、よりエレガントな方法はありますか (そして、あると確信しています)。モバイル デバイス (特に iOS Safari) では、サファリが閉じられた後にアプリが再度開かれるたびに、pageshowメソッドが再度起動されるため、たとえば、既に完全に構​​築されたページに再入力されます。その動作を防ぐ方法はありますか?

4

1 に答える 1

2

私があなたを正しく理解していれば、一度だけトリガーするイベントと、ページ遷移中にいくつかの値を保存するためのより良い方法が必要です。

アプリの有効期間中に 1 回だけトリガーされるページ イベントがいくつかあります。ページが複数回アクセスされても問題ありません。

最初に言及する 2 つはpagebeforecreatepagecreate です。これら 2 つのイベントは、ページの作成前と作成中に 1 回だけトリガーされます。これは、動的に生成されたコンテンツを追加する絶好の機会でもあります。jQuery Mobile は、そのコンテンツを少し先に拡張するためです。

3 番目のページ イベントはpageinitと呼ばれ、従来の jQuery ドキュメント対応の真の対応物です。前の 2 つのイベントと同様に、一度だけトリガーされますが、これは jQuery Mobile コンテンツが拡張されようとしている瞬間でもあるため、この時点で追加されたすべての動的コンテンツは手動で拡張する必要があります。このイベントは、イベント バインドにも優れています。これは、pageshowとは異なり、イベントをバインドするときに、pageinit複数のイベント バインドについて心配する必要がないためです。

Pageshowページの高さはページが表示されている場合にのみ実際の値になるため、正しいページの高さを必要とするプラグインを使用する場合にのみ使用してください。これは、フォト ギャラリー、カルーセル、基本的に画像を処理するすべてのプラグインにとって重要です。

ページ イベントの詳細については、こちらをご覧ください。また、ページ遷移間でデータを渡す/保存する 3 つの異なるソリューションを見つけることができます。

于 2013-06-04T20:54:21.283 に答える