動的アプリケーションでカスタム ナビゲーションを構築しようとしています。すべての画面がサーバーから取得されるため、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フラグが設定されていても、イベントを呼び出してページを再生成する必要があるため、理由がわかりません。
よろしく、
セルジオ・ロペス