Javascript AngularJS模态异步关闭不';行不通

Javascript AngularJS模态异步关闭不';行不通,javascript,angularjs,angular-bootstrap,Javascript,Angularjs,Angular Bootstrap,我正在创建一个模式,并在数据进入后台后关闭它 var modal = modal.open({..some params..}); //after data loads modal.close(); 因此,我的问题是,由于所有内容都是异步的,如果我的数据是瞬时出现的,那么在模态完全打开之前,我的modal.close()就会执行,然后我的屏幕仍然与模态屏幕保持一致 我找到的一个解决方案是向modal.close添加超时 $timeout(function() { modal.close()

我正在创建一个模式,并在数据进入后台后关闭它

var modal = modal.open({..some params..});

//after data loads
modal.close();
因此,我的问题是,由于所有内容都是异步的,如果我的数据是瞬时出现的,那么在模态完全打开之前,我的modal.close()就会执行,然后我的屏幕仍然与模态屏幕保持一致

我找到的一个解决方案是向modal.close添加超时

$timeout(function() {
 modal.close();
}, 1)

这是可行的,但这是正确的方法吗?或者还有其他更好的解决方案?

模态实例上有一个
已打开的
承诺,您应该使用它来保证模态在尝试关闭之前已完成打开。发件人:

opened
-在下载内容模板并解析所有变量后打开模式时解析的承诺

呈现
-呈现模式时解决的承诺

将它与您的HTTP请求混合在一起可能看起来像

modal = $modal.open({...})
$http.get(...).then(function(response) {
  modal.opened.then(modal.close)
})
以下是您当前使用的方法和使用
打开的
进行操作的方法

$scope.open = ->
  modalInstance = $modal.open(
    templateUrl: 'myModalContent.html',
    controller: 'ModalInstanceCtrl'
  )

  if $scope.work
    modalInstance.opened.then(->
      modalInstance.close()
    )
  else 
    modalInstance.close()

你是如何得到数据的?如果使用angular$http服务,您可以使用返回的promise对象上的成功/错误来广播消息,然后您的控制器可以对其进行操作……我从已缓存数据的缓存服务获取数据!这种模式的目的是什么?