关闭模式时如何停止 $interval ($uibModal)
Posted
技术标签:
【中文标题】关闭模式时如何停止 $interval ($uibModal)【英文标题】:how to stop $interval when closing the modal ($uibModal) 【发布时间】:2018-08-01 12:33:29 【问题描述】:我做了一个间隔:
$interval($scope.sendGetRequest, 1500)
该函数每 1500 毫秒发送一次 $http.get 请求。我想在关闭模态时停止这个间隔,因为即使我关闭模态,它仍然在间隔内发送请求。
模态关闭时触发的事件是什么,所以我可以在那里停止间隔?
** 我在模态范围内,我想在模态关闭之前停止间隔。
【问题讨论】:
【参考方案1】:您可能希望在 $scope 被破坏(模式关闭)时停止 $interval。
这应该在你的模态控制器内部:
var poll = $interval($scope.sendGetRequest, 1500);
$scope.$on('$destroy', stopPolling);
function stopPolling()
$interval.cancel(poll);
;
【讨论】:
如果这个答案解决了您的问题,那么最好接受它作为答案。【参考方案2】:您必须将间隔定义存储在变量中。
var myInterval = $interval(function()
// Do something
, 1500);
然后当你想停止它时,使用$interval
的cancel
方法。
$interval.cancel(myInterval);
Documentation
【讨论】:
【参考方案3】:在您的控制器中:
$scope.openDialog = function ()
var dialogIns = function ()
var dialogInstance = $uibModal.open(
animation: true,
templateUrl: 'modalhtmlPage.html',
controller: 'modalController',
);
;
在你的模态控制器中:
var intVal = $interval(function ()
//$http.get request
, 1500);
$scope.closeModal = function ()
$interval.cancel(intVal);
$uibModalInstance.close();
【讨论】:
间隔发生在模态内部,它们不共享相同的范围。我想在退出之前停止模态范围内的间隔。以上是关于关闭模式时如何停止 $interval ($uibModal)的主要内容,如果未能解决你的问题,请参考以下文章