У меня есть служба, которая содержит функцию, которая показывает загрузочный модальный. Результат модальности обещает, когда закрывается, принимается внутри службы, а затем обезвреживается вызов вызывающей функции. Сама функция обслуживания возвращает обещание.Угловое решение от службы
Моя проблема заключается в том, что контроллер никогда не получает разрешенное обещание после того, как модальное закрытие. Модальность дает обещание, когда я решаю свое обещание, получает удар, а commentCount - правильное значение.
Я новичок во всем обещании, так что это может быть неправильный способ сделать это, но разве это не должно работать так, как сейчас?
EDIT:
Я не просто возвращение обещание instance.result, потому что мне нужно сделать что-то еще внутри службы, перед возвратом commentCount к вызывающей функции. Однако это еще не реализовано.
обслуживание:
function postModal($http, $rootScope, $uibModal, userService, utilService, enumService, $q) {
var service = {};
service.showModal = function (postId, category) {
var deferred = $q.defer();
var extraClass = (category == enumService.postType.ARTICLE) ? 'article-post' : '';
var instance = $uibModal.open({
templateUrl: 'app/views/post_modal.html',
controller: 'postController',
controllerAs: 'postController',
windowClass: 'center-modal post-modal',
backdropClass: 'post-backdrop ' + extraClass,
background: 'static',
resolve: {
postId: function() {
return postId;
},
category: function() {
return category;
},
modalInstance: function() {
return this;
}
}
});
instance.result.then(function (commentCount) {
deferred.resolve(commentCount);
});
return deferred.promise;
};
return service;
}
Код от контроллера:
service.showModal(postId, category)
.then(function (commentCount) {
var comments = commentCount;
});
Если вместо использования '$ q.deferred' вы просто возвращаете' instance.result' (я знаю, вы сказали, что хотите делать больше вещей, но только ради отладки), получаете ли вы обещание, разрешенное в контроллер? – yarons
Да, я пробовал, и это сработало. :) Я на самом деле закончил делать что-то совершенно другое, но, ради знания, я собираюсь задать вопрос немного. –
Избегайте [отложенного антипаттера] (http://stackoverflow.com/q/23803743/1048572)! – Bergi