如何在Backbone.js中跟踪路由器更改事件

Tho*_* II 12 javascript backbone.js

每次应用程序在Backbone.js中切换URL时我都需要运行一个函数,我需要知道URL已更改为的hashtag.我假设有一个我可以绑定的事件,但我无法弄清楚哪个事件和要绑定的对象.

具体来说,我想将新URL发送到分析应用程序.

小智 32

我知道这是一个老帖子,但像@kirk建议的那样,Backbone.js已经建立了它.

Backbone.history.on("all", function (route, router) {
    //console.log(window.location.hash);
});
Run Code Online (Sandbox Code Playgroud)

我认为你最好使用这种方法.

  • 我建议使用"route"事件而不是"all".使用"全部"时发生双重事件.也许只是我. (9认同)
  • 我比托马斯的解决方案更喜欢这个,但我想知道为什么你在Backbone之前有$,以及为什么你不使用"bind"而不是"on"...... (4认同)

Tho*_* II 5

@qwertymk就在那里.您可以在窗口对象上查找hashchange事件:

// jQuery example
$(window).bind('hashchange', function(){
    console.log(window.location.hash);
});
Run Code Online (Sandbox Code Playgroud)