我正在创建一个模态,并在数据进入后台时将其关闭。
var modal = modal.open({..some params..});
//after data loads
modal.close();
所以我的问题是,因为一切都是异步的,如果我的数据瞬间出现,那么我的modal.close()会在模态完全打开之前执行,然后我的屏幕仍然停留在模态屏幕上。
我找到的一个解决方案是向modal.close添加超时
$timeout(function() {
modal.close();
}, 1)
这样可行,但这是正确的方法吗?还是有其他更好的解决方案?
答案 0 :(得分:2)
模态实例上有一个opened
承诺,您应该使用它来保证模态在您尝试关闭之前已经完成打开。来自the docs:
opened
- 在下载内容模板并解析所有变量后打开模态时解决的承诺
rendered
- 在呈现模态时解析的承诺。
将其与您的HTTP请求混合可能看起来像
modal = $modal.open({...})
$http.get(...).then(function(response) {
modal.opened.then(modal.close)
})
以下是您目前正在使用opened
进行此操作的demo。
$scope.open = ->
modalInstance = $modal.open(
templateUrl: 'myModalContent.html',
controller: 'ModalInstanceCtrl'
)
if $scope.work
modalInstance.opened.then(->
modalInstance.close()
)
else
modalInstance.close()