2016-06-03 6 views
0

Bei einer einzelnen Seite app ist mein Problem, dass ich das hashchange -Ereignis abonnieren, um den Inhalt zu rendern (erstellen und zerstören Widgets, die meine Seiten darstellen), aber die Funktion wird nur ausgelöst, wenn der Hash tatsächlich ändert, z Browser zurück und vorwärts Tasten sind angeklickt.Wie wird die Browseraktualisierung bei Verwendung von Dojo/Hash gehandhabt?

Mein Haupt JavaScript-Datei, die immer auf erstes Mal geladen wird und auch auf Refresh enthält folgende

topic.subscribe("/dojo/hashchange", function(newhash){ 
    //set content based on hash 
}); 

Wenn Refresh geklickt wird, ist es nicht gefeuert und ich bin mit einer leeren Seite links (meine ganze Logik zum Rendern der Seite liegt innerhalb der anonymen Funktion für das Thema, das ich abonniert habe)

Antwort

1

Ihre Subskription wird bei einer Aktualisierung nicht aufgerufen, da sich der Hash nicht geändert hat. Sie abonnieren Hash-Änderungen, die nach dem Laden der Seite vorgenommen werden.

Mit dieser Subscribe-Methode können die Dinge schnell außer Kontrolle geraten. Vielleicht möchten Sie sich die Route ansehen. einige Links -

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/

+0

Danke, ich den Router statt Hash implementiert und es funktioniert perfekt. – sjs

+0

großartig! Du könntest das als die richtige Antwort akzeptieren :) – denov

Verwandte Themen