У меня есть две функции.
Один скрывает модальность, когда нажата кнопка "закрыть". Другая функция проверяет правильность и изменяет модальное состояние на другое состояние/представление.
У меня проблема с модальным 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
Любые советы или ресурсы были бы очень благодарны. Спасибо!
Вы можете использовать функции 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
. Кроме того, это хороший блог пост, где обещания объясняются как мультфильм.