从控制器中,我检测到$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);
});
});如何检测调整大小事件是否已完成并运行函数?
发布于 2017-07-27 06:22:50
不幸的是,没有像“调整大小完成”这样的事件可供我们挂接。每个像素变化都是它自己的独立事件。如果第三方解决方案是100%不可能的,你可以实现你自己的debounce:
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毫秒)到期。如果在“关闭”门的情况下调用去抖动函数,则不会发生任何事情。
https://stackoverflow.com/questions/45337637
复制相似问题