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

时间:2015-08-21 09:37:00

标签: jquery backbone.js local-storage hashchange

我有一个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')。任何线索如何发生这种情况,如果这是常规的?

1 个答案:

答案 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。

希望有所帮助。 感谢