Я пытаюсь предотвратить навигацию в AngularJS на основе результата HTTP GET к конечной точке авторизации (которая связана с моей архитектурой Spring Security, но это не важно для этого вопроса).
Я прикрепил следующее к блоку run (), прикрепленному к моему модулю верхнего уровня:
$rootScope.$on("$locationChangeStart", function(event, newUrl, oldUrl) {
var path = $location.path();
$http.get('/svc/authorize/view?urlPath=' + path).then(response => {
if (response.data.result === "NOT_AUTHORIZED") {
event.preventDefault();
console.log("Prevented unauthorized location change");
$ui.showError("Unable to Navigate to " + newUrl);
}
});
});
(Примечание: $ ui - это наш сервис, а не AngularJS или сторонний инструмент).
К сожалению, из-за асинхронного $ http.get () страница загружается до завершения вызова.
Если это поможет, вот пример нашего определения маршрута:
$routeProvider.when('/problem', {
templateUrl: '/app/management/problem/problem.tmpl.html',
controller: 'problemCtrl'
});
Кто-нибудь может мне помочь? Я надеюсь, что только что сделал глупую ошибку при обработке асинхронного вызова.