Как найти целевое состояние во время начала перехода - PullRequest
0 голосов
/ 05 июня 2018

Как найти следующее состояние при запуске перехода.Я написал код для показа запуска модального режима, который показывает сообщение пользователю в случае, если форма грязная, но я не хочу показывать это сообщение, даже если форма грязная, когда выполняется переход в определенные состояния.Есть ли служба, которую я могу внедрить, чтобы найти следующее состояние, в которое я перехожу.

$transitions.onStart({}, () => {

  //here I want to add a condition to not launch this modal if the $state name is xyz, otherwise just show the modal

  if (($scope.form.$dirty)) {
                return $uibModal.open({
                    templateUrl: '/app/shared/modalDialog.html',
                    controller: 'ModalDialogController',
                    controllerAs: 'modal',
                    resolve: {
                        modalOptions: function () {
                            return {
                                headerText: 'Unsaved Changes',
                                bodyText: 'There are unsaved changes on this page. Are you sure you want to leave?',
                                primaryText: 'Continue',
                                secondaryText: 'Cancel'
                            };
                        }
                    }
                }).result
                 .then(result => {
                        if (result === 'secondary')
                        {
                            return false;
                        }
                    });
}
}

1 Ответ

0 голосов
/ 05 июня 2018

Вы можете воспользоваться тем, что angular-ui-router транслирует различные события состояния, включая $stateChangeStart.У нас есть глобальный контроллер, в котором мы регистрируем обработчик для этого события:

$scope.$on('$stateChangeStart', (
    event,
    toState,
    toParams,
    fromState,
    fromParams) => {
        // code goes here to examine to the 'toState' parameter
        // and take any appropriate action
    });
...