在我的backbone.js项目中,我需要一个仅在window.location.hash
更改时触发的方法。我找到了一些替代解决方案,我的问题为here。
另外,我可以通过在骨干视图initialize function
中创建一个事件来解决此问题,如下所示
Backbone.View.extend({
initialize() {
$(window).on('hashchange',()=> {
console.log('yes hashchange events works')
});
}
但我寻求使用backbone.js's
eventDelegates
或listenTo
提前致谢
答案 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);
})