jQuery Mobile with Backbone中的后退按钮无法正常工作

时间:2013-08-16 02:19:40

标签: jquery-mobile backbone.js

我正在使用jQueryMobile和Backbone,并且自定义或动态生成的后退按钮无法正常回溯历史记录。我正在使用锚标记上的data-rel="back"属性,如文档中所述:http://view.jquerymobile.com/1.3.2/dist/demos/widgets/headers/

我的后退按钮代码如下:

<a href="#" data-rel="back" data-icon="arrow-l" data-iconpos="notext"></a>

当我点击后退按钮时,它似乎根本不使用data-rel="back"功能,而是转到href属性中指定的页面,在大多数情况下,这是'#'或空的。

这可以通过硬编码不同的href值来确认 - 后退按钮将转到该页面,而不是历史记录中的上一页。

我怀疑它是Backbone和jQuery Mobile之间的冲突以及让它们很好地工作所需的配置(让Backbone处理页面转换),但不知道如何绕过它。

如jQM文档中所述,我必须在mobile-config文件中设置以下内容:

$.mobile.ajaxEnabled            = false;
$.mobile.linkBindingEnabled     = false;
$.mobile.hashListeningEnabled   = false;
$.mobile.pushStateEnabled       = false;
$.mobile.changePage.defaults.changeHash = false;

注意:我在发布之前已经在SO上回顾了很多有关此主题的帖子,并且似乎没有在任何回复中提供合适的解决方案。

2 个答案:

答案 0 :(得分:0)

我明白了。它是实现此处的解决方案的组合: jQuery Mobile + backbone.js: page transition when going back

将属性'data-bypass'添加到我想绑定自定义事件的所有锚标签中,因为我使用Backbone Boilerplate项目中的一段代码来处理相对URL。

答案 1 :(得分:0)

我遇到了同样的情况,发现一个简单的解决方案就是创建一条新路线并将其用于历史。

例如,只需将后退按钮的href值设置为#back

<a href="#back" data-icon="back" data-rel="back" title="Go back">Back</a>

然后添加新路线

routes: {
    ...   
    'back' : 'back',
    ...
}

在处理路线的代码中,只需走两段历史。

appRouter.on('route:back', function() {
    history.go(-2);
});

需要返回-2才能取消#back路线。