AngularJS 模态异步关闭不起作用
AngularJS modal async close doesn't work
我正在创建一个模式并在数据进入后台后将其关闭。
var modal = modal.open({..some params..});
//after data loads
modal.close();
所以我的问题是,因为如果我的数据是即时出现的,那么一切都是异步的,然后我的 modal.close() 在模态完全打开之前执行,然后我的屏幕仍然停留在模态屏幕上。
我找到的一个解决方案是向 modal.close
添加超时
$timeout(function() {
modal.close();
}, 1)
这可行,但这样做是否正确?或者有其他更好的解决方案?
模态实例有一个 opened
承诺,您应该使用它来保证模态已完成打开,然后再尝试关闭它。来自 the docs:
opened
- a promise that is resolved when a modal gets opened after downloading content's template and resolving all variables
rendered
- a promise that is resolved when a modal is rendered.
将它与您的 HTTP 请求混合可能看起来像
modal = $modal.open({...})
$http.get(...).then(function(response) {
modal.opened.then(modal.close)
})
这里是 demo 您目前使用的方法和使用 opened
的方法。
$scope.open = ->
modalInstance = $modal.open(
templateUrl: 'myModalContent.html',
controller: 'ModalInstanceCtrl'
)
if $scope.work
modalInstance.opened.then(->
modalInstance.close()
)
else
modalInstance.close()
我正在创建一个模式并在数据进入后台后将其关闭。
var modal = modal.open({..some params..});
//after data loads
modal.close();
所以我的问题是,因为如果我的数据是即时出现的,那么一切都是异步的,然后我的 modal.close() 在模态完全打开之前执行,然后我的屏幕仍然停留在模态屏幕上。
我找到的一个解决方案是向 modal.close
添加超时$timeout(function() {
modal.close();
}, 1)
这可行,但这样做是否正确?或者有其他更好的解决方案?
模态实例有一个 opened
承诺,您应该使用它来保证模态已完成打开,然后再尝试关闭它。来自 the docs:
opened
- a promise that is resolved when a modal gets opened after downloading content's template and resolving all variables
rendered
- a promise that is resolved when a modal is rendered.
将它与您的 HTTP 请求混合可能看起来像
modal = $modal.open({...})
$http.get(...).then(function(response) {
modal.opened.then(modal.close)
})
这里是 demo 您目前使用的方法和使用 opened
的方法。
$scope.open = ->
modalInstance = $modal.open(
templateUrl: 'myModalContent.html',
controller: 'ModalInstanceCtrl'
)
if $scope.work
modalInstance.opened.then(->
modalInstance.close()
)
else
modalInstance.close()