我有一个 JQM 应用程序,并且正在合并 Backbone。由于我最初的 javascript 代码很大,我只提取我认为有问题的内容。我正在遵循此处引用的建议和呼叫步骤:
- jqm-config.js 来自http://coenraets.org/blog/2012/03/using-backbone-js-with-jquery-mobile/
- 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”。但是一旦在那里,如果我单击 a refresh
,它被相同的路由器规则间接重新处理,我最终会出现以下错误:
未捕获的类型错误:无法调用未定义的方法“触发器”
我下载了 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
是由第 #3794 行引起的,因为mpc
是undefined
. 所以,从 JQM,在 Chrome 检查器中,我也可以看到settings.fromPage
isundefined
和settings.pageContainer
is undefined
。我有点想象,JQM 无法对 fromPage 做出假设,因此无法继续我的刷新。我在 $mobile.changePage() 上尝试过的所有选项都没有成功。我没主意了。
更新/重现问题最少的在线网站:partindex,访问有错误的网站
任何帮助将不胜感激。