Ich trigger Backbone-Navigation-Funktion zum Ändern der URL nach einem Ereignis ausgelöst wird.Prevent Backbone.history.navigate von der Entschlüsselung URL-Fragment
-Code
Backbone.history.navigate("?q=" + encodeURIComponent(searchQuery))
In meinem Fall so etwas wie Max Müller, also mit Leerzeichen und Unicode-Zeichen searchQuery
könnte. Deshalb muss ich es kodieren mit in max + m% C3% BCller.
Aber innerhalb der Backbones Navigationsfunktion wird meine searchQuery
zurück zu "max müller" decodiert und so zurückgegeben.
So am Ende wird die URL in
geändertmyroot.com/?q=max müller
, die keine gültige URL ist. Stattdessen sollte es so sein:
myroot.com/?q=max+m%C3%BCller
Soweit ich denken kann, gibt es zwei Möglichkeiten, dieses Problem zu lösen:
1. changing/extending Backbone.history.navigate to return the encoded
fragment
2. recreating Backbone's navigate functionality to change the URL with plain Javascript or using any other library
Aber warum ist es nicht Standardverhalten von Backbone? Es ist nicht sinnvoll, eine ungültige URL zu erstellen.
zu tun Obwohl der Kern erstreckt das Beste, was zu tun wäre, wie Sie gesagt haben, entschied ich mich für den Moment Ebene zu verwenden JavaScript und tat so: 'Fenster .location.hash = "? q =" + encodeURIComponent (searchQuery); '. –
Ja das macht Sinn :) –