如何在backbone.js事件委托中使用“hashchange”事件?

时间:2016-05-04 09:31:44

标签: javascript events backbone.js hashchange

在我的backbone.js项目中,我需要一个仅在window.location.hash更改时触发的方法。我找到了一些替代解决方案,我的问题为here

另外,我可以通过在骨干视图initialize function中创建一个事件来解决此问题,如下所示

Backbone.View.extend({   
  initialize() {
      $(window).on('hashchange',()=> {
            console.log('yes hashchange events works')
      });
  }

但我寻求使用backbone.js's eventDelegateslistenTo

的解决方案

提前致谢

2 个答案:

答案 0 :(得分:3)

您可以将Backbone.history用于此范围。

  

History用作处理hashchange的全局路由器(每帧)   events或pushState,匹配适当的路由,并触发   回调。你不应该自己创造其中的一个   因为Backbone.history已经包含一个。

因为它会触发回调,您可以收听hashchange个事件:

Backbone.history.on("all", function (route, router) {
    console.log(window.location.hash);
});

Backbone.history.on("route", function () {
    console.log(window.location.hash);
});

答案 1 :(得分:0)

尝试初始化函数:

window.addEventListener('hashchange', function {
    var currentHash = location.hash;

    console.log('currentHash', currentHash);
})