Backbone.history.navigate with $(window).on( "hashchange" ) 奇怪的行为



我有一个Rails应用程序,我使用骨干JS作为FE框架与Coffeescript语法。现在,为了快速进入重点,我使用了一个骨干技巧,而不是取代Rails的redirect_to方法:

redirectTo = (something) ->
  Backbone.history.navigate('')
  Bacbkone.history.navigate("##{something}", {trigger: true})

每当我需要一个完整的刷新我的页面,例如当我创建的东西,我使用它(这可能是一个错误的方法,但我是新的骨干)。现在我还使用localStorage["something"]来存储稍后将使用的值。我还有一个函数:

$(window).on 'hashchange', ->
    window.localStorage.clear()

这里是奇怪的部分。例如,我用redirectTo('products')重定向到一个#products页面,通过一些逻辑,localStorage需要被清除,我不应该能够在Router中使用他的值。但有趣的部分是我可以导致它首先去行动'#products'从骨干路由器,然后触发$(window).on('hashchange')。有什么线索吗,这是怎么发生的,如果这是正常的吗?

几点。1. 要完全刷新页面,可以执行

window.location.reload();

2。$(window).on 'hashchange'处理程序将在页面上URL的哈希部分发生变化时触发。

出什么问题了?我看到您已经在hashChange上清除了localstorage,但是这个hashChange处理程序将在路由转换到产品页面后触发。

那么解决方案是什么呢?快速的方法是在执行redirectTo('products');

时清除本地存储。

例如

//some code 
redirectTo('products');
window.localStorage.clear();
//Some more code

通过这种方式,您将永远不会清除localStorage。

希望有帮助。由于

相关内容

  • 没有找到相关文章

最新更新