Пожарное событие, когда маршрут неизменен angularjs

Я хочу выполнить перезагрузку маршрута ТОЛЬКО в том случае, если нет изменения маршрута, другими словами, перезагрузить контроллер, когда нажата кнопка, выполняющая его маршрут. На мой взгляд, в директиве ng-click я вызываю следующий метод:

this.reload = function() {
  $scope.$on('$routeChangeStart', function(event, next, current) {
    if($route.current == $route.next) {
      $route.reload();
    }
  })
}

Код внутри условия никогда не срабатывает, потому что в маршруте нет изменений. Я новичок в angularJS, поэтому любая помощь будет оценена:)

1 ответ

Я бы справился с двумя вещами, которые вы упомянули выше, отдельно

  1. При каждом изменении маршрута делайте все, что хотите.

Зарегистрируйте прослушиватель событий, который прослушивает routeChangeStart.

$rootScope.$on('$routeChangeStart', function (event, next, prev) {
    //if logic given what you want to do with the next/prev objects
});
  1. Если пользователь нажимает кнопку, перезагрузите маршрут.

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.

Другие вопросы по тегам