Wenn ich schieben Sie eine neue URL an das Rückgrat.die Geschichte, die query params bleibt?
Sagen wir, ich bin mit Rückgrat pushstate und ich navigieren Sie zu einer Seite mit query params:
domain.com/user/111?hello=123
Wenn ich diese ausführen:
Backbone.history.navigate('/settings', true);
Meine Einstellungen Seite geladen perfekt, aber das ?Hallo=123 bleibt in der URL...
domain.com/settings?hello=123
Und die Abfrage param bleibt in der URL wo ich die Website navigieren...
- Edit: ich bin mit dem github.com/jhudson8/backbone-query-parameters plugin.
- Könnten Sie die Frage ein wenig klarer? Sie möchten, leeren Sie den
location.search
wenn die Navigation zu einer anderen Seite? - Es scheint ein Problem gepostet über 2 Tagen auf github zu und der Autor scheint nicht geklappt zu haben auf dieses feature.
- Haben Sie aktiviert die pushState?
Backbone.history.start( { pushState : true } );
Du musst angemeldet sein, um einen Kommentar abzugeben.
Backbone-routing-und query-Parameter sind einer unglücklichen Ehe. Probleme sind gut dokumentiert in dies GitHub issue.
Das zentrale problem ist, dass
Backbone.Router
ist speziell für die Arbeit mit URL-hash-Fragmente sowie die pushState API. Bei der Verwendung von hash-URLs, die den query-string vor dem hash, und wird nie erreicht in der route. Mit pushState die query-string-Teil der URL-fragment, und erfordert eine andere route-Ausdruck.Lassen Sie uns sagen, Sie würden eine route
search
, und die route würde Optional Parameterq
,sort
undtype
. Als query-string, der würde ungefähr so Aussehen:Das problem ist, dass für Benutzer, die von älteren Browsern, Rückgrat wieder
hashchange
- based routing, und die route werden:Dem plugin, das Sie verwenden versucht, um dieses problem zu umgehen, aber keine Lösung für das Kern-Problem.
Wenn möglich, sollten Sie nicht verwenden von query-strings und geben keinerlei Status-Informationen mit optionaler Fragmente in Ihrer route Ausdrücken. Das Vorherige Beispiel-Routen würde sich dann:
Mit
(optional)
route teilen und:captures
(docs), Sie könnte diese URL mit dem folgenden Ausdruck:Solange die route Fragmente sind in der angegebenen Reihenfolge, dies entspricht urls mit keiner, und alle Parameter, zum Beispiel:
Diese Weise müssen Sie nicht sorgen zu machen über die third-party-query-string-Bibliotheken oder browser-Kompatibilität. Und wenn Sie mich Fragen, diese Art von URL sieht sauberer aus als gut.
Müssen Sie nicht verwenden die
backbone-query-parameters
- plugin, um sich mit dieser nicht mehr, so stellen Sie sicher, dass Sie die neueste version von Rückgrat und überschreiben Sie dann dieloadUrl
Methode innerhalbHistory.prototype
.user/111
, wo @TIMEX vermutlich behalten will, den query-string intakt? Es ist auch nicht die Frage zu lösen, bei der Verwendung von hash-basierte URLs, wo der query-string ist nicht Teil des fragments an alle.Nicht sicher, ob es zu spät ist. Ich kam zu dem gleichen problem, und ich kann sagen mit zuversicht: es ist ein bug, verursacht durch backbone-query-Parameter.
Ich eigentlich inspiriert durch deinen post. In der frühen Phase von meinem aktuellen Projekt, ich stellte backbone-query-Parametern, es funktionierte gut. Aber später, Rückgrat einige änderungen vorgenommen, so backbone-Abfrage-Parameter können nicht fassen die Parameter nicht mehr. Nicht bis vor kurzem, ich fand den Autor aktualisierte backbone-query-Parameter. Ich zog es wieder an, und es funktionierte.
Dann, Sie wissen. Ich cam zu das gleiche problem und fühle mich wirklich frustriert. Ich zweifelte nie daran, über backbone-query-Parameter, nicht, bis ich sah deinen post.
Entfernt habe ich das plugin eingerichtet und mit meinem eigenen code, nun, meine Geschichte funktioniert wie ein Charme.
Gibt es zahlreiche Möglichkeiten zu Holen die get-Parameter. Mir ist nur eine davon, aber es macht den job für mich. Nur für Ihre Referenz poste ich es hier.
Nur für den Fall, meine Routen werden, wie dies