Итак, я переписал ответ @Bema в TypeScript, и вот как он выглядит:
namespace MyAwesomeApp {
function detectBackButton(
$rootScope: ng.IRootScopeService,
$location: ng.ILocationService
) {
let actualLocation: string = '';
$rootScope.$on('$locationChangeSuccess',
() => {
actualLocation = $location.path();
});
$rootScope.$watch(() => $location.path(),
(newLocation: string, oldLocation: string) => {
if (actualLocation === newLocation) {
}
});
}
detectBackButton.$inject = [
'$rootScope',
'$location'
];
angular
.module('app')
.run(detectBackButton);
}
Нам не нужно создавать свойство вне $rootScope
службы, мы можем просто закрыть код «при изменении местоположения» и «при изменении местоположения» над локальной actualLocation
переменной. Оттуда вы можете делать все, что захотите, как и в исходном коде. Со своей стороны, я бы подумал о трансляции события, чтобы отдельные контроллеры могли делать все, что они должны, но вы могли бы включить глобальные действия, если бы это было необходимо .
Спасибо за отличный ответ, и я надеюсь, что это поможет другим пользователям машинописного текста.