【发布时间】:2014-02-10 20:39:32
【问题描述】:
现在我的控制器代码如下所示:
$scope.spAPI.load(id).then(function(result){
var deferred = $q.defer();
if(result !== undefined){
deferred.resolve($rootScope.$broadcast("onSpLoaded", result));
}
return deferred.promise;
}).then(function(success){
$scope.modalInstance = $modal.open({ ... });
});
我希望在处理完广播后打开模态实例。有没有办法做到这一点?
更新:我倒在考虑这个问题。我本来打算在模态实例之后进行广播,无论如何,没关系。
PS:我确实遇到了 modalinstance.opened 回调的问题,但我不得不绕过它。我仍在努力正确使用 $q,我的代码越来越混乱。
【问题讨论】:
-
你的代码看起来不错,它应该做你想做的事。因为
$broadcast()是同步操作,所以$broadcast()返回时应该调用所有的事件处理函数
标签: angularjs promise broadcast q