Backbone.js历史'路线改变'事件?

TTT*_*TTT 34 backbone.js

每次我们导航到不同的URL时是否会触发一般事件?

window.App =
  Models: {}
  Collections: {}
  Views: {}
  Routers: {}

  init: ->
    # Initialize Routers
    new App.Routers.Main()

    # Initialize History
    Backbone.history.start(pushState: true)

    # BIND VIEW CHANGE?
    $(@).on 'changeOfRoute', -> 
      console.log "Different Page" 

$(document).ready ->
  App.init()
Run Code Online (Sandbox Code Playgroud)

可以在每个视图中执行此操作,但我正在寻找一般解决方案.

Edw*_*ith 48

路由器上有"route"事件:

http://backbonejs.org/#Events-catalog

  • "route"(路由器,路由,参数) - 当任何路由匹配时,由历史(或路由器)触发.

这允许您绑定到特定路由.

如果要任何路由之后触发处理程序,请绑定到"route",并且路由将是第一个参数:

myRouter.on("route", function(route, params) {
    console.log("Different Page: " + route);
});
Run Code Online (Sandbox Code Playgroud)

这只会触发明确定义的路由的事件.如果要为未明确定义的路由触发事件,则按照如何在Backbone.Controller中检测无效路由和触发器功能添加"splat"路由

  • 谢谢,这很有效.但是,路径更改后事件将触发.如果路线更改开始,是否会触发事件? (2认同)
  • 看起来1.1.x版本有Router.execute,它会触发_before_每条路由.http://backbonejs.org/#Router-execute (2认同)