使用Backbone.history返回而不触发路由功能

时间:2012-07-06 15:07:04

标签: backbone.js

我有一个模态弹出窗口,打开时会更改URL。当用户关闭弹出窗口时,我想回到之前的URL,但我不想触发与该URL关联的路由,因为这将重新加载我的集合并呈现视图等。有没有办法调用{{1没有触发路由,或者是否存在与此类似的骨干?

我能想到的唯一解决方案是保存以前的路线,然后当模态关闭时调用

window.history.back()

但这似乎是解决一个简单问题的复杂方法。

1 个答案:

答案 0 :(得分:5)

在路由器中存储历史听起来像是一个很好的解决方案,我无法找到解决此问题的更好方法。

这方面的一个很好的解决方案是: Silently change url to previous using Backbone.js

我会做一个小调整,所以看起来像这样:

class MyRouter extends Backbone.Router

  initialize: (options) ->
    @on "all", @storeRoute
    @history = []

  storeRoute: ->
    @history.push Backbone.history.fragment

  previous: ->
    if @history.length > 1
      @navigate @history[@history.length-2], false
    else
      @navigate '', true

然后你可以调用MyRouter.previous(),如果你是直接请求,它会把你带到你的根目录。

我希望它是路由器的默认功能,至少保留最后5个路由。