Я получил пример кода для обработки представления HTML на основе изменения URL.Все работает нормально, кроме Browser Back/Forward button
.
Я использую угловую маршрутизацию (ngRoute).На определенном маршруте я установил reloadOnSearch:false
, чтобы избежать перезагрузки контроллера:
app.config(function($routeProvider,$locationProvider,$httpProvider,
$mdDateLocaleProvider) {
$locationProvider.html5Mode(true);
$routeProvider
.when('/trans',{
templateUrl: 'user_trans.html',
authenticated: true,
controller: 'dashCtrl',
reloadOnSearch: false
})
}
Для обработки маршрута:
app.run(function($rootScope,$location,userModel,$window,$routeParams,$route){
$rootScope.$on('$routeUpdate', function(event, next, current){
$rootScope.actualLocation = $location.path();
if (next.$$route.authenticated) {
if (!userModel.getAuthStatus()) {
$location.url('/').replace(undefined);
}
}
if (next.$$route.originalPath =='/') {
if (userModel.getAuthStatus()) {
next.$$route.originalPath = '/home';
$location.path(next.$$route.originalPath);
$location.url('/home').replace(undefined);
}
else {
}
}
//TO detect browser back button:
$rootScope.$watch(function () {return $location.path()}, function (newLocation, oldLocation) {
console.log("checking old and new location")
if($rootScope.actualLocation === newLocation) {
alert('Why did you use history back?');
}
});
})
Здесь упоминалось, что to detect browser back/forward button
, этот кодблок не посещается, когда я запускаю браузер назад кнопки вперед.