JQM アプリがあり、Backbone を組み込んでいます。私の最初の JavaScript コードは巨大なので、問題があると思われるものだけを抽出しています。ここに記載されているアドバイスと電話の手順に従っています。
- http://coenraets.org/blog/2012/03/using-backbone-js-with-jquery-mobile/の jqm-config.js
- http://jquerymobile.com/test/docs/pages/backbone-require.html
私は大きな問題を抱えています。これが動作です。問題は次のコードに由来します。
var r = Backbone.Router.extend
router: ...
"page": "pageDisplay"
...
pageDisplay: function(){
c = new AView(); // Backbone.View ...fetch() data...
$(c.el).page(); // Call to JQM to add its extra stuff; seems done correctly
$.mobile.changePage( "#" + c.id, {changeHash: false}); // line 50
}
のリンクを<a href="#page" >
たどると、ちゃんと処理された「#page」というページにたどり着きます。しかし、一度クリックするrefresh
と、同じルーター ルールによって間接的に再処理され、次のエラーが発生します。
キャッチされていない TypeError: 未定義のメソッド 'trigger' を呼び出せません
jquery モバイル開発コードをダウンロードしたところ、次のことがわかりました。
// JQM1.1.2 - 行番号 3772 ページ コンテナー内の特定のページを表示します。
$.mobile.changePage = function( toPage, options ) { if ( isPageTransitioning ) { pageTransitionQueue.unshift(arguments ); return; } var settings = $.extend( {}, $.mobile.changePage.defaults, options); // Make sure we have a pageContainer to work with. settings.pageContainer = settings.pageContainer || $.mobile.pageContainer; // Make sure we have a fromPage. settings.fromPage = settings.fromPage || $.mobile.activePage; // Line #3788 var mpc = settings.pageContainer, // Line #3789 pbcEvent = new $.Event("pagebeforechange" ), triggerData = { toPage: toPage, options: settings }; // Let listeners know we're about to change the current page. mpc.trigger( pbcEvent, triggerData ); // Line #3794
はUncaught TypeError
Line #3794 が原因mpc
ですundefined
。それで、JQM から、Chrome のインスペクターで、 issettings.fromPage
とundefined
issettings.pageContainer
もわかりundefined
ます。JQM は fromPage を想定できないため、更新を続行できないと思います。$mobile.changePage() で試したすべてのオプションが成功しませんでした。私はアイデアがありません。
更新/問題を再現するための最小限のオンライン サイト: apartindex、バグのある Web サイトにアクセス
どんな助けでも大歓迎です。