6

我有一个模式弹出窗口,打开时会更改 URL。当用户关闭弹出窗口时,我想返回上一个 URL,但我不想触发与该 URL 关联的路由,因为这将重新加载我的集合并呈现视图等。有没有办法在window.history.back()不触发的情况下调用路线,还是有与此等效的骨干网?

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

Backbone.history.navigate(route, {trigger: false, replace: true});

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

4

1 回答 1

5

在路由器中存储历史听起来对我来说是一个很好的解决方案,我想不出更好的方法来解决这个问题。

一个很好的解决方案在这里: 使用 Backbone.js 将 url 静默更改为以前的

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

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 个最后的路由。

于 2012-12-09T07:36:59.890 回答