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

Bar*_*rny 6 backbone.js

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

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

Backbone.history.navigate(route, {trigger: false, replace: true});
Run Code Online (Sandbox Code Playgroud)

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

Mïc*_*röv 5

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

这方面的一个很好的解决方案是: 使用Backbone.js静默地将url更改为previous

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

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
Run Code Online (Sandbox Code Playgroud)

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

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