1

動的アプリケーションでカスタム ナビゲーションを構築しようとしています。すべての画面がサーバーから取得されるため、pagebeforechangeイベントを登録して独自の関数を実行します。

データを更新して動的ページを破棄し、ページ ID を使用して元のページを再度呼び出そうとする場合を除いて、すべてが期待どおりに機能しますが、今回はコードでページの HTML を作成しますが、jQuery Mobile は" c.data("page") is undefined " エラー。

pagebeforechange イベントをバインドします。

$(document).bind('pagebeforechange', function(e, data) {
    if(typeof data.toPage === 'string') {
        appobj.dynamicPage(data.toPage, data.options);
    }
});

次に、dynamicPage メソッドで、Underscore.js テンプレートに基づいてページの HTML を作成し、jQuery でページを変更し続けます。

$.get('templates/page.tpl.html', function (data) {
    html = _.template(data, { /* several template parameters */});
});

page = $(html);
page.appendTo('body').page();                            

目的のページを作成して DOM に挿入しているので、可能な限り多くの jQM を使用するという考えでした。

localStorage に保存するサポート データを更新する必要がある場合は、すべての動的ページを見つけて破棄します。

var current = $.mobile.activePage.attr('id');

$('.dynamicpage').remove();

$.mobile.changePage('#' + current

アプリケーションを実行すると、アプリケーションの起動時に存在しないページであっても、データを更新する必要がある場合でも、さまざまな画面/ページ間を簡単に移動できます (ユーザーがデータベース内のデータのアプリケーションに要素を追加したため)。次に、削除コードが実行されますが、古いページは再生成されず、すべての DOM コンテンツが非表示の白いページになりますが、ナビゲートしたいページも DOM にあるようです (少なくとも firebug はそう教えてくれます)。

開発を再開する場合、モデルの更新とビューの変更を処理するためにおそらく Backbone.js を使用するでしょうが、今のところは jQM のみを使用する必要があります。助言がありますか?jQM が自分のページを見つけられないことは理解していますが、 allowSamePageTransitionフラグが設定されていても、イベントを呼び出してページを再生成する必要があるため、理由がわかりません。

よろしく、

セルジオ・ロペス

4

0 に答える 0