我有一个Rails应用程序,我使用Backbone JS作为带有Coffeescript语法的FE框架。现在为了快速达到目的,我使用Backbone技巧而不是替换Rails的redirect_to
方法:
redirectTo = (something) ->
Backbone.history.navigate('')
Bacbkone.history.navigate("##{something}", {trigger: true})
每当我需要对我的页面进行完全刷新时,例如当我创建一些东西时,我就会使用它(这可能是一个错误的方法,但我是Backbone的新手)。现在我还使用localStorage ["某些东西"]来存储我稍后会使用的值。我也有一个功能:
$(window).on 'hashchange', ->
window.localStorage.clear()
这是奇怪的部分。例如,我通过一些逻辑重定向到带有redirectTo('products')
的#products页面,需要清除localStorage,我不能在路由器中使用他的值。但有趣的是,我可以让它首先从Backbone路由器转到动作'#products'
,然后触发$(window).on('hashchange')
。任何线索如何发生这种情况,如果这是常规的?
答案 0 :(得分:0)
几点。 1.要完全刷新页面,您可以
window.location.reload();
2。只要页面上的URL的哈希部分发生更改,$(window).on 'hashchange'
处理程序就会触发。
可能出现什么问题?: 我已经看到你正在清除hashChange上的localstorage,但是这个hashChange处理程序将在路由转换到产品页面后触发。
解决方案是什么?
快速方法是在执行redirectTo('products');
例如
//some code
redirectTo('products');
window.localStorage.clear();
//Some more code
通过这种方式,您将永远不会清除localStorage。
希望有所帮助。 感谢