Ich reiche ein...
Aktuelles Verhalten:
Hallo Leute.
Nach einer Diskussion in einer PR, die ich erstellt habe, um einen Fehler im $location-Dienst für URLs zu beheben, der Apostrophe stellen Sie fest, dass
Weitere Informationen finden Sie in der PR. https://github.com/angular/angular.js/pull/16098
Erwartetes / neues Verhalten:
Undekodierte und dekodierte URLs sollten mit dem $location-Dienst funktionieren
Winkelversion: 1.x.
Browser: alle
Noch etwas:
Wie man es repariert
In src/ng/browser.js gibt es eine Funktion fireStateOrUrlChange, die diese Validierung hat
if (lastBrowserUrl === self.url() && prevLastHistoryState === cachedState) {{
Rückkehr;
}
Das Hauptproblem scheint zu sein, dass wir self.url() mit lastBrowserUrl vergleichen, aber lastBrowserUrl kann aus verschiedenen Quellen gesetzt werden, nicht immer mit der gleichen Kodierung/Dekodierung
@gkalpak meinst du (aus deinem Kommentar ) etwas wie url = urlResolve(url).href
innerhalb von $browser.url
tun oder alle Anrufe in $browser.url(val)
zu ändern, um konsistent zu sein? Das Hinzufügen von urlResolve
scheint zu funktionieren, obwohl einige Tests geändert wurden (einige URLs enden jetzt auf /
).
@jbedard , ich habe die Implementierungsdetails nicht
@dmartres können Sie bestätigen, ob dies in 1.7.3 immer noch ein Problem ist? Ich denke, aee7d53a6b5d3d7bc0a1124fd3df9b263777e72e (Behebung # 16592) hat dies möglicherweise behoben?
Wir haben dies teilweise mit dem Browser <a href>
behoben, um URLs in einigen Schlüsselbereichen zu normalisieren (https://github.com/angular/angular.js/commit/e68697e2e30695f509e6c2c1e43c2c02b7af41f0, https://github.com/ angle/angular.js/commit/2f72a69ded53a122afad3ec28d91f9bd2f41eb4f). Allerdings normalisiert kein Browser alles mit dieser Methode. Um dies wirklich zu beheben, müssten wir die Normalisierung selbst implementieren.
Ich habe einen POC implementiert , um diese Normalisierung manuell
Aus diesen Gründen werden wir dies in den Zustand "wird nicht beheben" versetzen.
Hilfreichster Kommentar
Wir haben dies teilweise mit dem Browser
<a href>
behoben, um URLs in einigen Schlüsselbereichen zu normalisieren (https://github.com/angular/angular.js/commit/e68697e2e30695f509e6c2c1e43c2c02b7af41f0, https://github.com/ angle/angular.js/commit/2f72a69ded53a122afad3ec28d91f9bd2f41eb4f). Allerdings normalisiert kein Browser alles mit dieser Methode. Um dies wirklich zu beheben, müssten wir die Normalisierung selbst implementieren.Ich habe einen POC implementiert , um diese Normalisierung manuell
Aus diesen Gründen werden wir dies in den Zustand "wird nicht beheben" versetzen.