Можете ли вы вызвать поддельное изменение состояния в AngularJS? - PullRequest
0 голосов
/ 05 июня 2018

Скажите в функции контроллера, что-то вроде этого:

$scope.fakeChangeState = function() {
    $state.go('stay right here and do nothing');
}

И затем вызовите его при нажатии кнопки:

<button ng-click="fakeChangeState()">click</button>

Возможно ли что-то подобное?

Существует директива, которую я хочу активировать, когда нажимаются некоторые кнопки на сайте.Директива активируется с помощью «$ stateChangeStart».

Директива очень хорошо активируется при переходе на другую страницу с использованием, например, панели навигации.Тем не менее, есть кнопки, не являющиеся частью навигации, которые только изменяют представление (т. Е. Они изменяют содержимое страницы без изменения состояния при нажатии).

Как активировать директиву изменения состояния беззаставить его изменить состояние?

Ответы [ 2 ]

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

Решил это, просто скопировав код из директивы и поместив его в код контроллера, который активируется при нажатии кнопок.Видимо, я не очень хорошо объяснил, в чем проблема, но просто скопировал код, чтобы решить проблему.Это сделало так, чтобы директива вообще не запускалась.

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

Вы можете использовать событие $stateChangeStart, чтобы предотвратить переход в другое состояние (то есть состояние по умолчанию).Я не уверен, когда ваша директива сработает, так что может быть слишком рано, чтобы ваша директива save сработала.

$rootScope.$on('$stateChangeStart',
function(event, toState, toParams, fromState, fromParams){
    event.preventDefault();
    // transitionTo() promise will be rejected with
    // a 'transition prevented' error
})
...