【问题标题】:How to use "hashchange" event in backbone.js event delegates?如何在backbone.js 事件委托中使用“hashchange”事件?
【发布时间】:2016-05-04 09:31:43
【问题描述】:

在我的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 的解决方案

提前致谢

【问题讨论】:

    标签: javascript events backbone.js hashchange


    【解决方案1】:

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

    History 充当全局路由器(每帧)来处理 hashchange 事件或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);
    });
    

    【讨论】:

    • 不幸的是,它对我不起作用,因为 Backbone.history 的 hashChange 选项设置为 false,但是这个解决方法成功了:´ window.addEventListener('hashchange', this.handleHashChange);'
    【解决方案2】:

    试试这个来初始化函数:

    window.addEventListener('hashchange', function {
        var currentHash = location.hash;
    
        console.log('currentHash', currentHash);
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-24
      • 2019-05-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多