Я отправляю ...
Текущее поведение:
Привет, народ.
После обсуждения в PR, которое я создал, чтобы исправить ошибку в сервисе $ location для URL-адреса, который содержит апострофы @gkalpak, обратите внимание, что потенциально апострофы в URL-
подробности см. в PR. https://github.com/angular/angular.js/pull/16098
Ожидаемое / новое поведение:
недекодированный и декодированный URL-адрес должен работать с использованием сервиса $ location
Угловая версия: 1.x.
Браузер: все
Что-нибудь еще:
Как это исправить
В src / ng / browser.js есть функция fireStateOrUrlChange, которая имеет эту проверку
if (lastBrowserUrl === self.url () && prevLastHistoryState === cachedState) {{
возвращение;
}
Основная проблема, похоже, заключается в том, что мы сравниваем self.url () с lastBrowserUrl, но lastBrowserUrl может быть установлен из разных источников, не всегда с одной и той же кодировкой / декодированием.
@gkalpak, вы имеете в виду (из вашего комментария ) что-то вроде url = urlResolve(url).href
в $browser.url
или изменение всех вызовов на $browser.url(val)
чтобы они были согласованными? Добавление urlResolve
похоже, работает, хотя меняет некоторые тесты (некоторые URL-адреса теперь заканчиваются на /
).
@jbedard , детали реализации не
@dmartres, можете ли вы подтвердить, что это по-прежнему проблема в версии 1.7.3? Я думаю, что aee7d53a6b5d3d7bc0a1124fd3df9b263777e72e (fixing # 16592) могло это исправить?
Мы частично исправили это, используя браузер <a href>
для нормализации URL-адресов в нескольких ключевых областях (https://github.com/angular/angular.js/commit/e68697e2e30695f509e6c2c1e43c2c02b7af41f0, https://github.com/ angular / angular.js / commit / 2f72a69ded53a122afad3ec28d91f9bd2f41eb4f). Однако ни один браузер не нормализует все с помощью этого метода. Чтобы по-настоящему исправить это, нам нужно реализовать нормализацию самостоятельно.
Я реализовал POC, чтобы выполнить эту нормализацию вручную, однако мы решили, что это слишком большое изменение на данный момент. К вашему сведению, 15 из протестированных, добавленных в этот коммит, в настоящее время не работают в chrome.
По этим причинам мы собираемся перевести это в состояние «не исправлять».
Самый полезный комментарий
Мы частично исправили это, используя браузер
<a href>
для нормализации URL-адресов в нескольких ключевых областях (https://github.com/angular/angular.js/commit/e68697e2e30695f509e6c2c1e43c2c02b7af41f0, https://github.com/ angular / angular.js / commit / 2f72a69ded53a122afad3ec28d91f9bd2f41eb4f). Однако ни один браузер не нормализует все с помощью этого метода. Чтобы по-настоящему исправить это, нам нужно реализовать нормализацию самостоятельно.Я реализовал POC, чтобы выполнить эту нормализацию вручную, однако мы решили, что это слишком большое изменение на данный момент. К вашему сведению, 15 из протестированных, добавленных в этот коммит, в настоящее время не работают в chrome.
По этим причинам мы собираемся перевести это в состояние «не исправлять».