Я пытаюсь написать функцию, которая открывает окно с угловым ui и возвращает обещание после его закрытия. Обычно это легко, вы возвращаете модальный экземпляр, но в этом сценарии, даже если окно закрыто, я хочу проверить ответ внутри функции .then() и, возможно, отклонить обещание на основе кода состояния, хотя это был успешным.
Это, вероятно, не имеет особого смысла, так вот какой-то код ...
// Function which should return a promise
var myFunc = function(){
var modalInstance = $modal.open({
templateUrl: 'xxx',
controller: 'yyy',
});
return modalInstance.result.then(function (result) {
// If the login was successful then resolve
if(result && result.success === true){
// What goes here?
}
// If it was uncuccessful then reject, even though it was closed successfully.
else{
// What goes here?
}
}, function() {
$log.info('Modal was closed unsuccessfully');
});
}
myFunc.then(function(){
// DO something
});
Спасибо, что сработало отлично. Я знал, что это будет что-то простое, бит, который я не разработал, был тот факт, что вы не могли просто вернуть отложенное. Решить() вы должны вернуть отложенное.произведение – jonhobbs
Я не понимаю, почему это сработает. Когда я пытаюсь использовать тот же код, я получаю «ReferenceError: $ modalInstance не определен» –
@ToddGrigsby Исправлено опечатка, $ modalInstance должно быть modalInstance. –