在单页面应用程序上,我的问题是我正在订阅hashchange事件以呈现内容(创建和销毁代表我的页面的小部件),但该函数仅在哈希实际更改时被触发,例如单击浏览器后退和前进按钮。
我的主要javascript文件总是第一次加载并且在刷新时包含以下
topic.subscribe("/dojo/hashchange", function(newhash){
//set content based on hash
});
单击刷新时,它不会被触发,我留下一个空白页面(我所有的逻辑渲染页面都在我订阅的主题的匿名函数内)
答案 0 :(得分:1)
您的订阅未在刷新时调用,因为哈希实际上没有更改。您正在订阅哈希更改,在页面加载后发生的更改。
使用这种订阅方法,事情可能会很快失控。你可能想看看使用路线。一些链接 -
https://developer.mozilla.org/en-US/docs/Web/Events/hashchange
https://dojotoolkit.org/documentation/tutorials/1.9/hash/
https://dojotoolkit.org/reference-guide/1.10/dojo/router.html
https://www.sitepen.com/blog/2014/06/18/dojo-faq-does-dojo-have-routing-like-backbone-and-embe/