我有一个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。
希望有帮助。由于