Пожарное событие, когда маршрут неизменен angularjs
Я хочу выполнить перезагрузку маршрута ТОЛЬКО в том случае, если нет изменения маршрута, другими словами, перезагрузить контроллер, когда нажата кнопка, выполняющая его маршрут. На мой взгляд, в директиве ng-click я вызываю следующий метод:
this.reload = function() {
$scope.$on('$routeChangeStart', function(event, next, current) {
if($route.current == $route.next) {
$route.reload();
}
})
}
Код внутри условия никогда не срабатывает, потому что в маршруте нет изменений. Я новичок в angularJS, поэтому любая помощь будет оценена:)
1 ответ
Я бы справился с двумя вещами, которые вы упомянули выше, отдельно
- При каждом изменении маршрута делайте все, что хотите.
Зарегистрируйте прослушиватель событий, который прослушивает routeChangeStart.
$rootScope.$on('$routeChangeStart', function (event, next, prev) {
//if logic given what you want to do with the next/prev objects
});
- Если пользователь нажимает кнопку, перезагрузите маршрут.
HTML
<button ng-click="reload_route()">reload</button>
контроллер
app.controller('myCtrl', function($scope, $route){
$scope.reload_route = function(){
//once again add if logic in here if needed
$route.reload();
}
})
Кроме того, в приведенном выше примере функция $routeChangeStart выполняет обратный вызов и передает объекты event, next и prev. Вы должны использовать эти аргументы в своих операторах if, а не в $route.current или $route.next.