AngularJS模态异步关闭不起作用



我正在创建一个模态,一旦数据进入后台关闭它。

var modal = modal.open({..some params..});
//after data loads
modal.close();

所以我的问题是,因为一切都是异步的,如果我的数据是即时的,那么我的modal.close()在模态完全打开之前执行,然后我的屏幕仍然停留在模态屏幕上。

我发现的一个解决方案是在mode .close

中添加超时
$timeout(function() {
 modal.close();
}, 1)

这是有效的,但这是正确的方法吗?还是有其他更好的解决办法?

模态实例上有一个opened承诺,你应该用它来保证模态在你试图关闭它之前已经完成打开。来自文档:

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

rendered -一个承诺,是解决当一个模态呈现。

将它与HTTP请求混合可能看起来像

modal = $modal.open({...})
$http.get(...).then(function(response) {
  modal.opened.then(modal.close)
})

这里有一个演示,演示了您当前的操作方式和使用opened的操作方式。

$scope.open = ->
  modalInstance = $modal.open(
    templateUrl: 'myModalContent.html',
    controller: 'ModalInstanceCtrl'
  )
  if $scope.work
    modalInstance.opened.then(->
      modalInstance.close()
    )
  else 
    modalInstance.close()

最新更新