В моем приложении AngularJS у меня есть две фабрики, называемые «editInfo» и «pinVerify». То, что я пытаюсь сделать, это заставить фабрику editInfo вызвать службу pinVerify с функцией обратного вызова, например, pinVerify.sendPin(this.saveInfo)
, а затем сохранить этот метод внутри фабрики pinVerify, когда пользователь ввел этот вывод и нажал кнопку, вызывающую pinVerify.pinEntered()
Как я могу использовать обратные вызовы между двумя фабриками AngularJS?
Проблема заключается в том, что метод обратного вызова будет скопирован в объект pinVerify и не сможет ссылаться на свойства на фабрике editInfo.
Итак ... я попытался использовать $q.defer()
внутри фабрики pinVerify и разрешить его в pinVerify.pinEntered()
, когда пользователь вводит контакт, отправленный по SMS.
Это отлично работает, и я могу внутри завода editInfo сделать это вместо того, чтобы с помощью обратных вызовов:
pinVerify.sendPin().then(function() {
this.saveInfo();
}
И метод saveInfo обнаружит, если штифт был правильно и скрыть модальность, чтобы войти в него. Проблема возникает, когда контакт неверен.
Обещание уже разрешено, поэтому другой щелчок на кнопке, вызывающей pinVerify.pinEntered
, ничего не будет делать в принципе. Я не могу разрешить это дважды.
Так что теперь я вроде туда, где я начал, и серьезно рассматривает пьянства во время работы ...
Любые предложения о том, как я могу выполнить этот вид отношений между двумя заводами? Предложения по хорошему пиву/водки тоже работают.
Трудно помочь, не понимая, как это работает. и видят больше кода. Звучит как случай, когда '$ q.all (обещание1, обещание2)' может помочь ... или просто выбросить колпачок на эту бутылку – charlietfl
$ q.all не поможет мне, так как 'pinVerify.pinEntered' можно вызвать бесконечное количество раз и фактическая проверка введенного вывода выполняется на другом заводе 'editInfo' –
Используется ли это с помощью углового-ui-модального? И вы преждевременно закрываете модальность перед валидацией? – charlietfl