是否可以在不使用history.pushState
的情况下重写浏览器的历史记录?
我有一个带有路由器的骨干应用程序,看起来像这样:
routes: {
'posts': 'posts',
'modal': 'modal'
},
'before': function (args) {
//check if logged in
//do some various other setup tasks
//maybe delete modal routes from the history?
//forward to route
args.next()
},
'posts': function () {
//make and show posts
},
'modal': function (params) {
//edit user email preferences OR
//create a new post OR
//do various other crud operations
}
无论何时触发模态路由,我都希望阻止将哈希写入浏览器的历史状态。原因是,在历史上向后旅行时,用户不应该重新打开模态。
我查看了主干源代码,但我没有看到任何简单地说history = []
的内容。
如果没有推送状态,有没有办法做到这一点?
答案 0 :(得分:0)
您是否尝试将router.navigate(fragment,[options])函数的replace选项设置为true?
这应该更新URL而不在浏览器的历史记录中创建条目
http://backbonejs.org/#Router-navigate
如果您正在处理Button click事件,那么应该在视图中处理,而不是在路由器类中处理。
例如:
class MyView extends Backbone.View
events :
'click #backButton' : 'onClick'
initialize : ->
#Some Stuff
render: ->
#Some Stuff
onClick: ( e ) ->
router.navigate '/projects', {replace : true }