从控制器我检测$ window的resize事件,然后重启我的carousel指令。
但问题是,carusel重启了近5-6次。我找不到任何有用的解决方案。
angular.element($window).bind('resize', function () {
$scope.$apply(function(){
$scope.showCarousel = false;
$timeout(function(){
$scope.calculateGamesCount();
$scope.showCarousel = true;
}, 250);
});
});
我如何检测,如果调整大小事件已完成然后运行函数?
答案 0 :(得分:0)
不幸的是,没有像我们可以加入的“调整大小”这样的事件。每个像素变化都是它自己的独立事件。如果第三方解决方案100%无法解决问题,那么您可以实施自己的本土去抖:
function debounce(f, n){
let allow_run = true;
return function(...args){
if(allow_run){
allow_run = false;
setTimeout(_=> allow_run = true, n);
return f.apply(f, args);
}
}
}
window.onresize = debounce(_=> console.log('resizing!'), 250);
基本上,我们有一个看门人,allow_run
。如果在门打开时调用去抖动函数,则允许执行,并关闭门,直到超时(n
毫秒)到期。如果在门关闭的情况下调用去抖动函数,则不会发生任何事情。