我在Backbone导航方面遇到了这个奇怪的问题。我阅读了很多帖子,无法找到与我的问题相关的任何内容。
所以情况就是这样:假设我们有页面:A,B和C.
B是编辑页面,我不想将其包含在历史记录中。
如果用户在页面A上,则转到B,然后转到C.如果他单击后退按钮,则应将其重定向到A.
因此,为了使其工作,我会听取元素上的所有单击事件,拦截它们,并调用Backbone.history.navigate()方法。另外我检查当前的url,如果它是B,我将{replace:true}参数传递给navigate(),以便从历史记录中省略B。
基本上它起作用,B从历史中省略。只有在跳过B重新加载页面的情况下,才会改变视图。如果跳过非路由,则无需重新加载即可运行。
所以,例如:
我没有使用pushState。目前正在Chrome上进行测试。
欢迎任何建议。我坚持了几个小时。无论我尝试什么导致了相同的行为。我尝试启用pushState,没有变化。
答案 0 :(得分:1)
我也看到了这个,在chrome 35.0.1916.114 m,但没有足够的评论点:) @ codefox421,我可以通过修改重新创建你的小提琴中的效果 routeViewB处理程序如下:
routeViewB: function routeViewB() {
this.navigate("xxx",{trigger:false,replace:true} );
$('body>*').detach();
$('body').append( app.viewB.$el );
},
现在访问B后,点击后退将重新加载页面:(
我还在这里找到了一个非常类似问题的报告: https://github.com/BlueSpire/Durandal/issues/513
会喜欢解决方法/解决方法。 atm我很难过。
**我刚刚更新到最新的chrome,问题已解决。