我正在使用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上回顾了很多有关此主题的帖子,并且似乎没有在任何回复中提供合适的解决方案。
答案 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
路线。