Rit*_*tan 9 setinterval clearinterval angularjs
嗨,我想删除所有$interval在Angular中运行.在我的页面有很多$间隔和按钮点击我想删除所有间隔.我将如何做.
任何帮助表示赞赏.
iva*_*rni 12
根据文档 $interval返回一个promise,并且可以使用取消间隔$interval.cancel(promise).
我看不到任何取消所有间隔的方法,但是如果你将返回的promises保存在一个数组中,你可以迭代它以取消它们.
var intervals = []
intervals.push($interval(function() { /*doStuff*/ }, /*timeout*/));
intervals.push($interval(function() { /*doDifferentStuff*/ }, /*timeout*/));
...
angular.forEach(intervals, function(interval) {
$interval.cancel(interval);
});
intervals.length = 0; //clear the array
Run Code Online (Sandbox Code Playgroud)
如果您的间隔分布在不同的控制器上,请使用服务来跟踪它们.
一种更高效的方法:
var intervals = [];
intervals.push($interval(function() { /*doStuff*/ }, /*timeout*/));
intervals.push($interval(function() { /*doDifferentStuff*/ }, /*timeout*/));
//doing some stuff
while(intervals.length){
$interval.cancel(intervals.pop());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7718 次 |
| 最近记录: |