Tak więc przepisałem odpowiedź @Bema na TypeScript i tak to wygląda:
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);
}
Nie musimy tworzyć właściwości poza $rootScope
usługą, możemy po prostu zamknąć kod „przy zmianie lokalizacji” i „przy zmianie lokalizacji” na actualLocation
zmiennej lokalnej . Stamtąd możesz robić, co chcesz, tak jak w oryginalnym kodzie. Ze swej strony Pomyślę nadawania zdarzenia tak, że poszczególne kontrolery mogą robić, co im wolno, ale można obejmować działania globalne , jeśli trzeba było .
Dziękuję za świetną odpowiedź i mam nadzieję, że pomoże to innym użytkownikom maszynopisu.