Лучшая практика для объединения двух функций, AngularJs / JavaScript

0

У меня есть две функции.

Один скрывает модальность, когда нажата кнопка "закрыть". Другая функция проверяет правильность и изменяет модальное состояние на другое состояние/представление.

У меня проблема с модальным NOT 'hiding', когда пользователь переходит в новое состояние. Я вижу, что это работает, но модальность остается на дисплее, и я думал, что лучший способ приблизиться к ней - это связать мои две функции? Это правильная терминология?

ДВЕ функции.

Скрывает модальные

$scope.closetripInfo = function() {
    $scope.modal.hide();
  };

SWIPES право раскрывать новое.state

$scope.onSwipeRight = function() {
  $state.go('app.current-trip');
}

Это сработало! НО. То, что я closetripInfo сделать, это closetripInfo мою захватывающую функцию closetripInfo в onSwipeRight Так вот:

$scope.onSwipeRight = function() {

  $scope.closetripInfo();  
  $state.go('app.current-trip').closetripInfo();
}

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

ОШИБКА

TypeError: $ state.go(...). ClosetripInfo не является функцией в области видимости. $ Scope.onSwipeRight

Любые советы или ресурсы были бы очень благодарны. Спасибо!

Теги:
function

1 ответ

4
Лучший ответ

Вы можете использовать функции AngularJS для выполнения функций асинхронно. Обещания в AngularJS предоставляются встроенным сервисом $q. Вы можете прочитать об этом здесь.

$scope.onSwipeRight = function() {
  var deferred = $q.defer();
  deferred.resolve('res');

  $state.go('app.current-trip');

  // We return a promise
  return deferred.promise;
}


onSwipeRight().then(function(res) {
   // Success callback
   $scope.closetripInfo();
},null);

Вот сценарий использования услуги $q. Кроме того, это хороший блог пост, где обещания объясняются как мультфильм.

  • 0
    Midhun! Это здорово, и именно об этом я думал, однако я не знал, как правильно это выполнить! Спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню